diff --git a/ChangeLog b/ChangeLog index c0afef693c..9b4abb9ab6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16957 @@ +=== release 1.17.1 === + +2020-06-19 19:22:18 +0100 Tim-Philipp Müller + + * ChangeLog: + * NEWS: + * RELEASE: + * gst-plugins-bad.doap: + * meson.build: + Release 1.17.1 + +2020-06-19 17:20:02 +0100 Tim-Philipp Müller + + * docs/plugins/gst_plugins_cache.json: + * ext/srt/gstsrt.c: + srt: add "empty" subclasses for deprecated srt{client,server}{src,sink} + The doc system gets confused when we register the exact same + class as multiple elements, so make a subclass for each. + Also wrap registration of deprecated elements with #ifndef GST_REMOVE_DEPRECATED. + Part-of: + +2020-06-19 15:31:04 +0100 Tim-Philipp Müller + + * docs/plugins/gst_plugins_cache.json: + * ext/x265/gstx265enc.c: + x265: ignore tune property when diffing generated docs + Unfortunately it means those tune enums don't show up in + the docs then, but if that's how it's gotta be.. + (Problem at hand is that on Tim's machine x265enc gets an + tune=animation and on the CI machine this doesn't show up.) + Part-of: + +2020-06-19 13:08:10 +0100 Tim-Philipp Müller + + * docs/plugins/gst_plugins_cache.json: + docs: update plugins cache + Add some more plugins, update for new markers. + Part-of: + +2020-06-19 13:05:38 +0100 Tim-Philipp Müller + + * ext/directfb/dfbvideosink.c: + * ext/openni2/gstopenni2src.cpp: + Mark more plugin GTypes as plugin API + To appease the CI gods. + Part-of: + +2020-06-17 09:31:09 +0200 Antonio Ospite + + * tools/gst-project-maker: + gst-project-maker: use $0 for the program name in usage and help text + Part-of: + +2020-01-17 17:49:47 +0100 Antonio Ospite + + * tools/gst-project-maker: + gst-project-maker: set up a meson project instead of an autotools one + Now that autotools has been removed generate a meson project template in + gst-project-maker. + There are some differences with the autotools project + 1. gstreamer-controller-1.0 is not added to the default dependencies. + 2. The '-Wall' option is not set explicitly, meson can handle that. + 3. The flags in GST_PLUGIN_LDFLAGS have not been ported to meson as + they are not necessary anymore. + The generated project requires meson 0.53.0 for the 'fs' module. It's up + to the user to remove that part in case compatibility with older + versions of meson is desired. + Part-of: + +2019-02-01 17:05:23 +0100 Antonio Ospite + + * tools/gst-project-maker: + gst-project-maker: fix comment referring to plug-in instead of program + Fix the comment in $basedir/tools/Makefile.am which wrongly refers to + plug-in while the file in tool/ is about the executable program. + Part-of: + +2019-02-01 17:04:19 +0100 Antonio Ospite + + * tools/gst-app-maker: + gst-app-maker: fix program name and arguments in usage text and help text + Part-of: + +2020-06-16 00:12:03 +0900 Seungha Yang + + * sys/mediafoundation/gstmfsourceobject.c: + * sys/mediafoundation/gstmfsourceobject.h: + * sys/mediafoundation/gstmfsourcereader.cpp: + * sys/mediafoundation/gstmfutils.cpp: + * sys/mediafoundation/gstmfvideosrc.c: + mfvideosrc: Add support for jpeg on Win32 application + Enable reading jpeg data from webcam if it's supported. + Note that this would be enabled only for Win32. + For UWP, we need to research more about how to support jpeg. + Part-of: + +2020-06-16 00:11:03 +0900 Seungha Yang + + * sys/mediafoundation/gstmfcapturewinrt.cpp: + mfvideosrc: Fix wrong casting + Don't cast ISoftwareBitmap to IMFMediaBuffer + Part-of: + +2020-06-14 04:12:42 +0900 Seungha Yang + + * sys/mediafoundation/mediacapturewrapper.cpp: + mfvideosrc: Add support YUY2 format for UWP + Part-of: + +2020-06-14 03:13:04 +0900 Seungha Yang + + * sys/mediafoundation/gstmfcaptureengine.cpp: + * sys/mediafoundation/gstmfcaptureengine.h: + * sys/mediafoundation/gstmfdevice.c: + * sys/mediafoundation/gstmfvideosrc.c: + * sys/mediafoundation/meson.build: + mediafoundation: Drop IMFCaptureEngine implementation + It was introduced for later use of its enhanced feature over IMFSourceReader + such as taking photo with video preview, audio/video capturing at + the same time, etc. But currently it's not our use case, and it would + be maintenance burden. + Part-of: + +2020-06-17 10:57:00 +0900 Hosang Lee + + * ext/smoothstreaming/gstmssdemux.c: + mssdemux: ignore unrecognized stream + Only create pads for steams with caps that can be recognized + from the fourcc. + Part-of: + +2020-04-07 21:47:22 +1000 Jan Schmidt + + * docs/plugins/gst_plugins_cache.json: + * gst/dvbsubenc/gstdvbsubenc-util.c: + * gst/dvbsubenc/gstdvbsubenc.c: + * gst/dvbsubenc/gstdvbsubenc.h: + * gst/dvbsubenc/libimagequant/CHANGELOG: + * gst/dvbsubenc/libimagequant/COPYRIGHT: + * gst/dvbsubenc/libimagequant/README.md: + * gst/dvbsubenc/libimagequant/blur.c: + * gst/dvbsubenc/libimagequant/blur.h: + * gst/dvbsubenc/libimagequant/libimagequant.c: + * gst/dvbsubenc/libimagequant/libimagequant.h: + * gst/dvbsubenc/libimagequant/mediancut.c: + * gst/dvbsubenc/libimagequant/mediancut.h: + * gst/dvbsubenc/libimagequant/mempool.c: + * gst/dvbsubenc/libimagequant/mempool.h: + * gst/dvbsubenc/libimagequant/nearest.c: + * gst/dvbsubenc/libimagequant/nearest.h: + * gst/dvbsubenc/libimagequant/pam.c: + * gst/dvbsubenc/libimagequant/pam.h: + * gst/dvbsubenc/libimagequant/viter.c: + * gst/dvbsubenc/libimagequant/viter.h: + * gst/dvbsubenc/meson.build: + * gst/meson.build: + * meson_options.txt: + dvbsubenc: Add DVB Subtitle encoder + Add an element that converts AYUV video frames to a DVB + subpicture stream. + It's fairly simple for now. Later it would be good to support + input via a stream that contains only GstVideoOverlayComposition + meta. + The element searches each input video frame for the largest + sub-region containing non-transparent pixels and encodes that + as a single DVB subpicture region. It can also do palette + reduction of the input frames using code taken from + libimagequant. + There are various FIXME for potential improvements for now, but + it works. + Part-of: + +2020-06-16 19:26:13 +0900 Seungha Yang + + * sys/d3d11/gstd3d11utils.c: + d3d11: Don't assume response of context query has valid d3d11 device context + Peer elements should return FALSE if d3d11 device context is unavailable + but it might happen for some reason (e.g., wrong implementation or so) + Part-of: + +2020-06-15 21:10:09 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.c: + * sys/d3d11/gstd3d11decoder.h: + * sys/d3d11/gstd3d11h264dec.c: + * sys/d3d11/gstd3d11h265dec.c: + * sys/d3d11/gstd3d11vp8dec.c: + * sys/d3d11/gstd3d11vp9dec.c: + d3d11decoder: Disable zero-copy for blacklisted device + Should enable it for verified devices. For now, Xbox is blacklisted + Part-of: + +2020-06-12 20:34:49 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.c: + d3d11decoder: Adjust alignment constraint for Xbox device + XBox doesn't seem to support 128 bytes alignment for 4K HEVC + Part-of: + +2020-06-12 20:18:53 +0900 Seungha Yang + + * sys/d3d11/gstd3d11window.cpp: + d3d11window: Do not configure video processor for Xbox device + Disable video processor for Xbox until it's verified + Part-of: + +2020-06-12 19:07:07 +0900 Seungha Yang + + * sys/d3d11/gstd3d11utils.c: + * sys/d3d11/gstd3d11utils.h: + d3d11utils: Add a helper method for checking Xbox device + Required for some cases to work around device specific issue + Part-of: + +2020-06-12 20:11:29 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.c: + d3d11videosink: Use GPU memory copy if possible + Even if fallback buffer is required (e.g., shader resource view is unavailable), + use direct GPU memory copy if possible. It must be much faster than + system memory copy approach. + Part-of: + +2020-06-12 19:44:01 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.c: + d3d11videosink: Ensure shader resource view of fallback buffer + SRV must be configured for color conversion + Part-of: + +2020-06-12 19:08:34 +0900 Seungha Yang + + * sys/d3d11/gstd3d11window.cpp: + d3d11window: Fix typo "configureed" + Part-of: + +2019-11-21 13:50:21 +0900 Jun-ichi OKADA + + * sys/winscreencap/dxgicapture.c: + * sys/winscreencap/dxgicapture.h: + * sys/winscreencap/gstdxgiscreencapsrc.c: + * sys/winscreencap/gstdxgiscreencapsrc.h: + * sys/winscreencap/gstwinscreencap.c: + * sys/winscreencap/meson.build: + winscreencap: Add dxgiscreencapsrc element. + This element uses the Desktop Duplication API to capture the desktop screen at high speed. + It supports Windows 8 or later. + It has the following features compared to other elements: + * Runs faster. + * It works in High DPI environment. + * Draws an accurate mouse cursor. + Part-of: + +2020-05-14 11:03:49 +0800 Xu Guangxin + + * sys/msdk/gstmsdkdec.c: + * sys/msdk/gstmsdkdec.h: + * sys/msdk/gstmsdkvc1dec.c: + msdkdec: hold a reference for the surfaces locked by msdk + previous code releases GstBuffer too earlier. so we will see + ERROR default gstmsdkvideomemory.c:77:gst_msdk_video_allocator_get_surface: failed to get surface available + ERROR msdkbufferpool gstmsdkbufferpool.c:270:gst_msdk_buffer_pool_alloc_buffer: failed to create new MSDK memory + We need to hold GstBuffer reference for msdk if the surfaced locked by msdk. + step to reproduce. + 1. ffmpeg -f lavfi -i testsrc=duration=10:size=320x240:rate=30 -pix_fmt yuv420p -c:v libx265 test.265 + 2. GST_GL_PLATFORM=egl gst-launch-1.0 -v filesrc location=test.265 ! h265parse ! msdkh265dec ! queue ! glimagesink + Part-of: + +2020-06-12 15:48:14 +1000 Matthew Waters + + * ext/vulkan/shaders/ayuv_to_rgb.frag: + * ext/vulkan/shaders/bin2array.py: + * ext/vulkan/shaders/color_convert_generic.glsl: + * ext/vulkan/shaders/identity.frag: + * ext/vulkan/shaders/identity.vert: + * ext/vulkan/shaders/nv12_to_rgb.frag: + * ext/vulkan/shaders/rgb_to_ayuv.frag: + * ext/vulkan/shaders/rgb_to_nv12.frag: + * ext/vulkan/shaders/rgb_to_yuy2.frag: + * ext/vulkan/shaders/swizzle.frag: + * ext/vulkan/shaders/swizzle.glsl: + * ext/vulkan/shaders/swizzle_and_clobber_alpha.frag: + * ext/vulkan/shaders/upsample_ayuv.glsl: + * ext/vulkan/shaders/upsample_nv12.glsl: + * ext/vulkan/shaders/upsample_yuy2.glsl: + * ext/vulkan/shaders/view_convert.frag: + * ext/vulkan/shaders/view_defines.h: + * ext/vulkan/shaders/yuy2_to_rgb.frag: + vulkan/shaders: add explicit license headers + Part-of: + +2020-06-12 15:47:01 +1000 Matthew Waters + + * ext/vulkan/shaders/bin2array.py: + vulkan/shaders: manually indent bin2array + Looks much nicer with some semblance of code formatting + Part-of: + +2020-06-12 04:59:47 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth265picture.c: + codecs: h265picture: Don't leak pic_list GArray + Equivalent to the commit 7b8c071f9c4a675f6b53e373c346d9e1f866f818 + Part-of: + +2020-06-11 19:35:29 +0100 Tim-Philipp Müller + + * docs/plugins/gst_plugins_cache.json: + * gst/meson.build: + * gst/yadif/gstyadif.c: + * gst/yadif/gstyadif.h: + * gst/yadif/meson.build: + * gst/yadif/vf_yadif.c: + * gst/yadif/yadif.c: + * gst/yadif/yadif_template.c: + * meson_options.txt: + yadif: remove plugin, there's now deinterlace method=yadif + Plugin code was still the GPL version, and the + functionality has now been moved into the deinterlace + element in gst-plugins-good as method=yadif (and LGPL). + See https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/444 + and https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/621 + Closes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/216 + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/463 + Part-of: + +2020-06-11 01:47:14 +0900 Seungha Yang + + * sys/wasapi2/gstwasapi2client.cpp: + wasapi2: Fallback to IAudioClient interface if IAudioClient3 API is unavailable + When default device is selected, IAudioClient3 API doesn't look like + available. + Part-of: + +2020-06-11 13:50:38 +0300 Vivia Nikolaidou + + * gst/interlace/gstinterlace.c: + interlace: Fix crash with empty caps in setcaps + If the src_peer_caps are EMPTY (e.g. negotiation failed somewhere), the + assertion inside gst_video_info_from_caps would fail and the whole + pipeline would crash. Check for gst_caps_is_empty before + gst_video_info_from_caps and gracefully fail if it's empty. + Part-of: + +2020-06-09 22:38:28 +0900 Seungha Yang + + * sys/wasapi/gstwasapisink.c: + * sys/wasapi/gstwasapisink.h: + * sys/wasapi/gstwasapisrc.c: + * sys/wasapi/gstwasapisrc.h: + wasapi: Fix possible deadlock while downwards state change + IAudioClient::Stop() doesn't seem to wake up the event handle, + then read() or write() could be blocked forever by WaitForSingleObject. + Part-of: + +2020-06-09 15:31:56 -0400 Thibault Saunier + + * docs/plugins/gst_plugins_cache.json: + docs: Update plugins cache + +2020-06-09 10:53:17 +0800 Haihua Hu + + * ext/wayland/wldisplay.c: + waylandsink: add wl_registry.global_remove listener + when hotplug display, wayland client will call this listener + to notify client do clean up. Temporarily set a dummy function + here to avoid app abort + Part-of: + +2020-06-08 14:56:31 -0400 Thibault Saunier + + * docs/plugins/gst_plugins_cache.json: + * ext/srt/gstsrtobject.c: + srt: doc: Add missing gst_type_mark_as_plugin_api + +2020-06-08 13:03:09 -0400 Thibault Saunier + + * docs/plugins/gst_plugins_cache.json: + * ext/lv2/gstlv2utils.c: + docs: Mark lv2 runtime generated enums as plugins API types + +2020-06-08 12:30:59 -0400 Thibault Saunier + + * docs/plugins/gst_plugins_cache.json: + * ext/faac/gstfaac.c: + * ext/vulkan/vksink.c: + * gst-libs/gst/vulkan/gstvkphysicaldevice.c: + docs: Add some more plugin API types + And allow creating vulkan device object without specifying an instance + so it can be introspected. + +2020-06-08 09:52:30 -0400 Thibault Saunier + + * docs/plugins/gst_plugins_cache.json: + * ext/vulkan/vkviewconvert.c: + docs: Update plugins cache + +2020-06-09 10:48:06 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codech264dec.c: + v4l2slh264dec: Fix reading mode and start code type + These two controls are not pointer based, so we don't need to pass any size or + pointer and need to copy the values afterward. This fixes H264 decoding + regression with Hantro and RKVDEC drivers. + Fixes 037730a787c6cdeeee5779c1834315c1ca764505 + Part-of: + +2020-06-08 23:46:43 +0900 Seungha Yang + + * sys/mediafoundation/gstmftransform.cpp: + mftransform: Fix deadlock when MFT requests processing output twice + This sequence of event/data flow might happen + 1) Initially we have one pending output event + 1-1) Then, process the pending output data + 2) No pending input event, then we should wait new pending input event + 2-1) Wakeup by new pending event (but it's pending output event) + In above case, MFT will not report new pending input event + if pending output is not processed. + Part-of: + +2020-06-08 19:22:07 +0900 Seungha Yang + + * sys/mediafoundation/gstmftransform.cpp: + mftransform: Add some debug log + Add some trace level log for debugging + Part-of: + +2020-05-19 10:27:18 +0200 Edward Hervey + + * gst-libs/gst/adaptivedemux/gstadaptivedemux.c: + adaptivedemux: Handle live duration queries + Handle it the same way live sources would, that it by handling the query and + return an unknown duration. + Fixes #566 + Part-of: + +2020-05-11 01:53:11 +0900 Seungha Yang + + * tests/check/elements/wasapi2.c: + * tests/check/meson.build: + tests: wasapi2: Add unit test for reusing wasapisrc + Test state change between playing and null and playing again + Part-of: + +2020-05-28 05:09:47 +0900 Seungha Yang + + * sys/wasapi2/gstwasapi2device.c: + * sys/wasapi2/gstwasapi2device.h: + * sys/wasapi2/meson.build: + * sys/wasapi2/plugin.c: + wasapi2: Add device provider implementation + Similar to device provider implementation of wasapi plugin, + this implementation supports only static probing. + But we can implement runtime device add/remove/update + monitoring using DeviceWatcher interface later. + See https://docs.microsoft.com/en-us/uwp/api/windows.devices.enumeration.devicewatcher + Part-of: + +2020-05-26 05:17:41 +0900 Seungha Yang + + * meson_options.txt: + * sys/meson.build: + * sys/wasapi2/AsyncOperations.h: + * sys/wasapi2/gstwasapi2client.cpp: + * sys/wasapi2/gstwasapi2client.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: Introduce new WASAPI plugin + Add a new wasapi implementation mainly to support UWP application. + Basically the core logic of this plugin is almost identical to + existing wasapi plugin, but main target is Windows 10 (+ UWP). + Since this plugin uses WinRT APIs, this plugin most likely might not + work Windows 8 or lower. + Compared with existing wasapi plugin, additional features of this plugin are + * Fully compatible with both Windows 10 desktop and UWP application + * Supports automatic stream routing (auto fallback when device was removed) + * Support device level mute/volume control + But some features of existing wasapi plugin are not implemented + in this plugin yet + * Exclusive streaming mode is not supported + * Loopback feature is not implemented + * Cross-compile is not possible with current mingw toolchain + (meaning that MSVC and Windows 10 SDK are required to build this plugin) + Part-of: + +2020-06-06 21:15:34 +0900 Seungha Yang + + * sys/mediafoundation/gstmfvideoenc.cpp: + mfvideoenc: Set PAR to output IMFMediaType + We've set it to input IMFMediaType but not for output. + So, if PAR is not 1:1, the input IMFMediaType will be accepted + by MFT (default is 1:1). + The PAR of input/output IMFMediaType must be identical + Part-of: + +2020-06-06 21:01:24 +0900 Seungha Yang + + * sys/mediafoundation/gstmftransform.cpp: + mftransform: Don't try to drain if MFT is not running + Otherwise MFT will be blocked forever as no event can be generated by + IMFMediaEventGenerator. + Part-of: + +2020-06-06 00:40:42 +0200 Mathieu Duponchelle + + * ext/aom/gstav1enc.c: + * ext/closedcaption/gstceaccoverlay.c: + * ext/colormanagement/gstlcms.c: + * ext/curl/gstcurlhttpsrc.c: + * ext/curl/gstcurlsshsink.c: + * ext/dash/gstdashsink.c: + * ext/dc1394/gstdc1394src.c: + * ext/dtls/plugin.c: + * ext/mpeg2enc/gstmpeg2encoptions.cc: + * ext/mplex/gstmplexjob.cc: + * ext/opencv/gstcameracalibrate.cpp: + * ext/opencv/gstcvsmooth.cpp: + * ext/opencv/gstdewarp.cpp: + * ext/opencv/gstdisparity.cpp: + * ext/opencv/gstfaceblur.cpp: + * ext/opencv/gstfacedetect.cpp: + * ext/opencv/gstretinex.cpp: + * ext/opencv/gstsegmentation.cpp: + * ext/opencv/gstskindetect.cpp: + * ext/openh264/gstopenh264enc.cpp: + * ext/openjpeg/gstopenjpegenc.c: + * ext/srtp/gstsrtp.c: + * ext/voamrwbenc/gstvoamrwbenc.c: + * ext/webp/gstwebpenc.c: + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtcdsp/gstwebrtcdsp.cpp: + * ext/x265/gstx265enc.c: + * gst-libs/gst/audio/gstnonstreamaudiodecoder.c: + * gst/adpcmenc/adpcmenc.c: + * gst/audiomixmatrix/gstaudiomixmatrix.c: + * gst/audiovisualizers/gstspacescope.c: + * gst/audiovisualizers/gstwavescope.c: + * gst/camerabin2/gstcamerabin2.c: + * gst/coloreffects/gstcoloreffects.c: + * gst/debugutils/gstchecksumsink.c: + * gst/debugutils/gstclockselect.c: + * gst/debugutils/gstcompare.c: + * gst/debugutils/gstfakevideosink.c: + * gst/fieldanalysis/gstfieldanalysis.c: + * gst/geometrictransform/gstgeometrictransform.c: + * gst/geometrictransform/gstmirror.c: + * gst/interlace/gstinterlace.c: + * gst/mpegtsmux/gstbasetsmux.c: + * gst/mxf/mxfmux.c: + * gst/netsim/gstnetsim.c: + * gst/rawparse/gstaudioparse.c: + * gst/rist/gstristsink.c: + * gst/rtmp2/gstrtmp2.c: + * gst/timecode/gstavwait.c: + * gst/timecode/gsttimecodestamper.c: + * gst/yadif/gstyadif.c: + * sys/decklink/gstdecklink.cpp: + * sys/dvb/gstdvbsrc.c: + * sys/uvch264/gstuvch264_src.c: + plugins: uddate gst_type_mark_as_plugin_api() calls + +2020-06-05 22:39:54 +0900 Seungha Yang + + * sys/d3d11/gstd3d11overlaycompositor.c: + d3d11overlaycompositor: Fix wrong Y position calculation + The Y coordinate of vertex and screen/image are opposite + Part-of: + +2020-06-04 13:33:59 +0200 cketti + + * ext/curl/gstcurlsmtpsink.c: + curlsmtpsink: Use correct email date format + See https://www.rfc-editor.org/rfc/rfc5322.html#section-3.3 + Part-of: + +2020-06-02 18:07:10 +1000 Matthew Waters + + * ext/closedcaption/gstccconverter.c: + ccconverter: signal cea608 padding as invalid + Outputting a valid but null cea608 byte pair may cause some issues with + some checksum packets. + Part-of: + +2020-06-02 17:35:00 +1000 Matthew Waters + + * ext/closedcaption/gstccconverter.c: + ccconverter: also copy buffer metadata when draining + Fixes buffers without PTS/DTS/meta/etc when receiving an EOS with data + still stored in the internal scratch buffer. + Part-of: + +2020-06-02 17:33:07 +1000 Matthew Waters + + * ext/closedcaption/gstccconverter.c: + ccconverter: Output the limit hit in debug lines + Fix two case of the input triplet limit not applying in cea608 -> cdp + conversion. + Part-of: + +2020-06-03 18:38:58 -0400 Thibault Saunier + + * docs/meson.build: + doc: Require hotdoc >= 0.11.0 + +2020-06-02 15:06:38 -0400 Thibault Saunier + + * ext/webrtc/gstwebrtcice.c: + doc: Fix spelling of GstWebRTCICE + +2020-05-27 16:01:42 +0300 Sebastian Dröge + + * docs/plugins/gst_plugins_cache.json: + docs: Update gst_plugins_cache.json + +2020-06-02 12:51:35 +0300 Sebastian Dröge + + * gst/debugutils/gstclockselect.c: + clockselect: Don't register GstClockSelectClockId multiple times + +2020-05-31 10:18:00 +0300 Sebastian Dröge + + * ext/aom/gstav1enc.c: + * ext/closedcaption/gstceaccoverlay.c: + * ext/colormanagement/gstlcms.c: + * ext/curl/gstcurlhttpsrc.c: + * ext/curl/gstcurlsshsink.c: + * ext/dash/gstdashsink.c: + * ext/dc1394/gstdc1394src.c: + * ext/dtls/plugin.c: + * ext/mpeg2enc/gstmpeg2encoptions.cc: + * ext/mplex/gstmplexjob.cc: + * ext/opencv/gstcameracalibrate.cpp: + * ext/opencv/gstcvsmooth.cpp: + * ext/opencv/gstdewarp.cpp: + * ext/opencv/gstdisparity.cpp: + * ext/opencv/gstfaceblur.cpp: + * ext/opencv/gstfacedetect.cpp: + * ext/opencv/gstretinex.cpp: + * ext/opencv/gstsegmentation.cpp: + * ext/opencv/gstskindetect.cpp: + * ext/openh264/gstopenh264enc.cpp: + * ext/openjpeg/gstopenjpegenc.c: + * ext/srtp/gstsrtp.c: + * ext/voamrwbenc/gstvoamrwbenc.c: + * ext/webp/gstwebpenc.c: + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtcdsp/gstwebrtcdsp.cpp: + * ext/x265/gstx265enc.c: + * gst-libs/gst/audio/gstnonstreamaudiodecoder.c: + * gst/adpcmenc/adpcmenc.c: + * gst/audiomixmatrix/gstaudiomixmatrix.c: + * gst/audiovisualizers/gstspacescope.c: + * gst/audiovisualizers/gstwavescope.c: + * gst/camerabin2/gstcamerabin2.c: + * gst/coloreffects/gstcoloreffects.c: + * gst/debugutils/gstchecksumsink.c: + * gst/debugutils/gstclockselect.c: + * gst/debugutils/gstcompare.c: + * gst/debugutils/gstfakevideosink.c: + * gst/fieldanalysis/gstfieldanalysis.c: + * gst/geometrictransform/gstgeometrictransform.c: + * gst/geometrictransform/gstmirror.c: + * gst/interlace/gstinterlace.c: + * gst/mpegtsmux/gstbasetsmux.c: + * gst/mxf/mxfmux.c: + * gst/netsim/gstnetsim.c: + * gst/rawparse/gstaudioparse.c: + * gst/rist/gstristsink.c: + * gst/rtmp2/gstrtmp2.c: + * gst/timecode/gstavwait.c: + * gst/timecode/gsttimecodestamper.c: + * gst/yadif/gstyadif.c: + * sys/decklink/gstdecklink.cpp: + * sys/dvb/gstdvbsrc.c: + * sys/uvch264/gstuvch264_src.c: + plugins: Use gst_type_mark_as_plugin_api() for all non-element plugin types + +2020-06-02 18:29:16 -0300 Peter Workman + + * ext/srt/gstsrtobject.c: + srtobject: continue polling or report error on failed receive + fixes #1277 + Part-of: + +2020-06-03 17:49:41 +0900 Seungha Yang + + * sys/d3dvideosink/d3dvideosink.c: + d3dvideosink: Use secondary rank + d3dvideosink will be replaced by d3d11videosink + Part-of: + +2020-05-30 04:56:58 +0900 Seungha Yang + + * sys/d3d11/plugin.c: + d3d11videosink: Assign primary rank + d3d11videosink has an advantage over d3dvideosink, such as + * Zero-copy playback with d3d11 decoders + * HDR rendering with 10-bit format/swapchain support + * UWP support + * Any system memory alignment/padding can be supported + * User can select target GPU device + And old d3dvideosink's functionality (e.g., navigation event, overlaycomposition) + can be covered by d3d11videosink + Part-of: + +2020-06-03 10:32:00 +0300 Sebastian Dröge + + * gst-libs/gst/webrtc/datachannel.c: + * gst-libs/gst/webrtc/datachannel.h: + webrtc: Add `Since: 1.18` markers to the new datachannel library API + Part-of: + +2020-05-15 16:51:46 +0200 Jan Alexander Steffens (heftig) + + * ext/srt/gstsrtobject.c: + srt: Make logging regarding callers more useful + Part-of: + +2020-06-01 14:46:03 +0300 Sebastian Dröge + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/webrtcdatachannel.c: + * ext/webrtc/webrtcdatachannel.h: + * gst-libs/gst/webrtc/datachannel.c: + * gst-libs/gst/webrtc/datachannel.h: + * gst-libs/gst/webrtc/meson.build: + * gst-libs/gst/webrtc/webrtc.h: + * gst-libs/gst/webrtc/webrtc_fwd.h: + webrtc: Add GstWebRTCDataChannel to the library API + This makes it more discoverable for bindings and allows bindings to + generate static API for the signals and functions. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1168 + Part-of: + +2020-05-29 22:21:10 +1000 Matthew Waters + + * gst-libs/gst/vulkan/gstvkimagememory.c: + vulkanimagememory: fix use-after-free releasing a view + If the view has the last reference to the image, then + gst_clear_mini_object will destroy the image and the lock used in the + next line. + Part-of: + +2020-05-29 22:17:24 +1000 Matthew Waters + + * gst-libs/gst/vulkan/gstvkimagememory.c: + vkimagememory: actually check the length of a ptr array + Not it's value is > 0 which should always be true. + Part-of: + +2020-05-28 11:51:28 -0700 Ederson de Souza + + * ext/avtp/meson.build: + avtp: Ensure that the avtp plugin is only built on Linux + It uses some Linux only features. This also prevents gst-build trying to + get libavtp on non-Linux environments. + +2020-05-29 11:36:06 -0700 Ederson de Souza + + * tests/check/elements/avtpcrfcheck.c: + * tests/check/elements/avtpcrfsync.c: + * tests/check/elements/avtpcrfutil.c: + * tests/check/elements/avtpcvfpay.c: + tests/avtp: Plug some (more) leaks + Some leaks were introduced in new tests - this patch fix them. + Part-of: + +2020-04-08 14:40:56 +0800 Haihao Xiang + + * sys/msdk/gstmsdkenc.c: + * sys/msdk/gstmsdkh265enc.c: + msdkh265enc: add support 12-bit 420 encoding + P016 is used for 12-bit encoding in MediaSDK, so the Shift flag is set + in the mfx parameters + Sample pipeline: + gst-launch-1.0 videotestsrc ! video/x-raw,format=P012_LE ! msdkh265enc ! \ + fakesink + Part-of: + +2020-05-19 14:59:25 +0800 Xu Guangxin + + * sys/msdk/gstmsdkvpp.c: + * sys/msdk/gstmsdkvpp.h: + msdkvpp: fix "failed to create new MSDK memory" + all msdk output surfaces come from out_alloc_resp, so the buffer count is not resizable. + we need set min_buffers, max_buffers to same size. + steps to reproduce + 1. ffmpeg -f lavfi -i testsrc=duration=10:size=320x240:rate=30:decimals=3 -pix_fmt yuv420p -c:v libx265 ~/bits/hevc/test.265 + 2. GST_GL_PLATFORM=egl gst-launch-1.0 -v filesrc location=~/bits/hevc/test.265 ! h265parse ! msdkh265dec ! msdkvpp ! queue ! glimagesink + you will see error like this: + ERROR default gstmsdkvideomemory.c:77:gst_msdk_video_allocator_get_surface: failed to get surface available + ERROR msdkbufferpool gstmsdkbufferpool.c:270:gst_msdk_buffer_pool_alloc_buffer: failed to create new MSDK memory + ERROR msdkvpp gstmsdkvpp.c:297:create_output_buffer: failed to create output video buffer + ERROR msdkdec gstmsdkdec.c:699:gst_msdkdec_finish_task: Failed to finish frame + ERROR msdkdec gstmsdkdec.c:1085:gst_msdkdec_handle_frame: Failed to finish a task + Part-of: + +2020-05-19 15:14:34 +0800 Xu Guangxin + + * sys/msdk/gstmsdkvpp.c: + * sys/msdk/gstmsdkvpp.h: + msdkvpp: hold GstBuffer ref count for locked surfaces + Part-of: + +2020-05-29 22:55:56 +0900 Seungha Yang + + * sys/mediafoundation/mediacapturewrapper.cpp: + mediafoundation: Use core dispatcher of current view instead of main view + Main view might be hidden depending on application's view tree. + In that case, ICoreApplication object doesn't return get_MainView() method + Note that nothing about this behavior was documented by Microsoft + https://docs.microsoft.com/en-us/uwp/api/windows.applicationmodel.core.coreapplication.mainview + Part-of: + +2020-05-28 22:48:15 +0100 Tim-Philipp Müller + + * ext/vulkan/meson.build: + vulkan: fix use of assert() with older meson versions + Follow-up to !1307 + Part-of: + +2020-05-28 19:07:32 +0100 Tim-Philipp Müller + + * ext/vulkan/meson.build: + * gst-libs/gst/vulkan/meson.build: + vulkan: don't run tests or build lib if plugin isn't actually built + The unit tests only checked for vulkan_dep.found(), which can + be true if the libs are there but glslc was not found, in which + case the plugin wouldn't be built and the unit tests would fail + because of missing vulkan plugins. + Doesn't really make much sense to build the vulkan integration lib + either if we're not going to build the vulkan plugin, so just disable + both for now if glslc is not available. + Fixes #1301 + Part-of: + +2020-05-27 14:44:01 +0200 Jan Alexander Steffens (heftig) + + * tests/check/elements/mpegtsdemux.c: + mpegtsdemux: tests: Test that tsparse doesn't drop padding + Part-of: + +2020-05-26 22:40:04 +0200 Jan Alexander Steffens (heftig) + + * gst/mpegtsdemux/mpegtsbase.c: + * gst/mpegtsdemux/mpegtsbase.h: + * gst/mpegtsdemux/mpegtspacketizer.c: + * gst/mpegtsdemux/mpegtsparse.c: + mpegtsdemux: Deliver all packets to tsparse + 34af8ed66a7c63048ce0bdf59bbe61011d7c6292 changed the code to use the + packetizer's packets instead of the incoming buffers, but mpegtsbase + didn't actually push all packets to the subclass. As a result, padding + (PID 0x1FFF) packets got lost. + Add a new boolean to toggle pushing unknown packets to mpegtsbase and + have mpegtsparse make use of it. + Part-of: + +2020-05-28 20:46:02 +0900 Seungha Yang + + * sys/mediafoundation/gstmfutils.cpp: + mediafoundation: Fix undeclared identifier error on UWP build + Some symbols are not available in case of UWP + Part-of: + +2020-05-28 18:18:58 +1000 Jan Schmidt + + * tests/check/elements/avtpcrfutil.c: + avtp: Initialise strack structures to 0 in tests + Avoid valgrind warnings about accessing uninitialised memory + in the tests by initialisting structures to 0 + Part-of: + +2020-05-28 17:33:43 +1000 Jan Schmidt + + * tests/check/elements/avtpcrfbase.c: + * tests/check/elements/avtpcrfcheck.c: + * tests/check/elements/avtpcrfsync.c: + avtp: Fix some leaks in the tests + Fix valgrind errors that area showing on the CI now + that AVTP elements are built. + Part-of: + +2020-05-25 13:10:20 +1000 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/webrtcsdp.c: + * ext/webrtc/webrtcsdp.h: + webrtc: handle an ice-lite remote offer + When the remote peer offers an ice-lite SDP, we need to configure our + ICE negotiation to be in controlling mode as the peer will not be. + Part-of: + +2020-05-08 17:30:21 +0200 Stéphane Cerveau + + * gst-libs/gst/codecparsers/gsth265parser.h: + codecparsers: fix typo in GstH265RegisteredUserData doc + Part-of: + +2020-05-27 15:17:12 +0100 Tim-Philipp Müller + + * tests/check/meson.build: + tests: fix meson test env setup to make sure we use the right gst-plugin-scanner + If core is built as a subproject (e.g. as in gst-build), make sure to use + the gst-plugin-scanner from the built subproject. Without this, gstreamer + might accidentally use the gst-plugin-scanner from the install prefix if + that exists, which in turn might drag in gst library versions we didn't + mean to drag in. Those gst library versions might then be older than + what our current build needs, and might cause our newly-built plugins + to get blacklisted in the test registry because they rely on a symbol + that the wrongly-pulled in gst lib doesn't have. + This should fix running of unit tests in gst-build when invoking + meson test or ninja test from outside the devenv for the case where + there is an older or different-version gst-plugin-scanner installed + in the install prefix. + In case no gst-plugin-scanner is installed in the install prefix, this + will fix "GStreamer-WARNING: External plugin loader failed. This most + likely means that the plugin loader helper binary was not found or + could not be run. You might need to set the GST_PLUGIN_SCANNER + environment variable if your setup is unusual." warnings when running + the unit tests. + In the case where we find GStreamer core via pkg-config we use + a newly-added pkg-config var "pluginscannerdir" to get the right + directory. This has the benefit of working transparently for both + installed and uninstalled pkg-config files/setups. + Part-of: + +2020-05-22 05:55:03 +0900 Seungha Yang + + * sys/mediafoundation/gstmfmp3enc.cpp: + * sys/mediafoundation/gstmfmp3enc.h: + * sys/mediafoundation/meson.build: + * sys/mediafoundation/plugin.c: + mediafoundation: Add support MP3 audio encoding + Add MediaFoundation MP3 encoder + Part-of: + +2020-05-18 18:12:38 +0900 Seungha Yang + + * sys/mediafoundation/gstmfaacenc.cpp: + * sys/mediafoundation/gstmfaacenc.h: + * sys/mediafoundation/gstmfaudioenc.cpp: + * sys/mediafoundation/gstmfaudioenc.h: + * sys/mediafoundation/gstmftransform.cpp: + * sys/mediafoundation/gstmftransform.h: + * sys/mediafoundation/meson.build: + * sys/mediafoundation/plugin.c: + mediafoundation: Add support for AAC encoding + Add MediaFoundation AAC encoder element. + Before Windows 10, mono and stereo channels were supported audio channels + configuration by AAC encoder MFT. However, on Windows 10, + 5.1 channels support was introduced. + To expose correct range of support format by this element + whatever the OS version is, this element will enumerate + all the supported format by the AAC encoder MFT + and then will configure sink/src templates while plugin init. + Part-of: + +2020-05-24 00:46:38 +0900 Seungha Yang + + * sys/mediafoundation/gstmfutils.cpp: + * sys/mediafoundation/gstmfutils.h: + * sys/mediafoundation/gstmfvideoenc.cpp: + mfutils: Move IMediaType release function to common utility + Part-of: + +2020-05-18 00:41:14 +0900 Seungha Yang + + * sys/mediafoundation/gstmfutils.cpp: + * sys/mediafoundation/gstmfutils.h: + * sys/mediafoundation/meson.build: + mediafoundation: Add util function to dump IMFAttributes values + It would be useful for debugging. + Reference: https://docs.microsoft.com/en-us/windows/win32/medfound/media-type-debugging-code + Part-of: + +2020-05-27 03:50:57 +0900 Seungha Yang + + * sys/d3d11/gstd3d11window_win32.cpp: + d3d11window_win32: Create internal window on parent window's thread + If parent and child windows are running on different thread, + there is always a chance to cause deadlock as DefWindowProc() call + from child window thread might be blocked until the message + is handled by parent's window procedure. + Part-of: + +2020-05-27 01:52:59 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.c: + * sys/d3d11/gstd3d11window.cpp: + * sys/d3d11/gstd3d11window.h: + * sys/d3d11/gstd3d11window_corewindow.cpp: + * sys/d3d11/gstd3d11window_swapchainpanel.cpp: + * sys/d3d11/gstd3d11window_win32.cpp: + d3d11window: Add unprepare method to clear internal resource + GObject::dispose method can be called multiple times. As win32 d3d11window + has an internal thread and because GObject::dispose method could be called from the + thread, it might cause problems such as trying to join self-thread + Part-of: + +2020-05-25 21:18:16 +0900 Seungha Yang + + * sys/mediafoundation/gstmfcaptureengine.cpp: + * sys/mediafoundation/gstmfsourceobject.c: + * sys/mediafoundation/gstmfsourcereader.cpp: + mfsourceobject: Remove useless null check for string + We can pass null for the value of string type property. + Part-of: + +2020-05-25 20:59:50 +0900 Seungha Yang + + * sys/mediafoundation/gstmfcaptureengine.cpp: + * sys/mediafoundation/gstmfcapturewinrt.cpp: + * sys/mediafoundation/gstmfsourcereader.cpp: + * sys/mediafoundation/gstmftransform.cpp: + * sys/mediafoundation/gstmfutils.cpp: + * sys/mediafoundation/mediacapturewrapper.cpp: + mediafoundation: Use G_BEGIN_DECLS/G_END_DECLS pair everywhere + ... instead of extern "c" {} block. + Part-of: + +2020-05-20 23:23:08 +0900 Seungha Yang + + * sys/mediafoundation/AsyncOperations.h: + * sys/mediafoundation/gstmfcapturewinrt.cpp: + * sys/mediafoundation/gstmfcapturewinrt.h: + * sys/mediafoundation/gstmfdevice.c: + * sys/mediafoundation/gstmfsourceobject.c: + * sys/mediafoundation/gstmfvideosrc.c: + * sys/mediafoundation/mediacapturewrapper.cpp: + * sys/mediafoundation/mediacapturewrapper.h: + * sys/mediafoundation/meson.build: + * sys/mediafoundation/plugin.c: + mediafoundation: Add support video capture on UWP app + New video capture implementation using WinRT Media APIs for UWP app. + Due to the strict permission policy of UWP, device enumeration and + open should be done via new WinRT APIs and to get permission from users, + it will invoke permission dialog on UI. + Strictly saying, this implementation is not a part of MediaFoundation + but structurally it's very similar to MediaFoundation API. + So we can avoid some code duplication by adding this implementation + into MediaFoundation plugin. + This implementation requires UniversalApiContract version >= 6.0 + which is part of Windows 10 version 1803 (Redstone 4) + Part-of: + +2020-05-20 23:56:38 +0900 Seungha Yang + + * sys/mediafoundation/gstmfsourceobject.c: + * sys/mediafoundation/gstmfsourceobject.h: + mfsourceobject: Move device name, path, and index to public struct + ... so that subclass can access each value and update them. + Part-of: + +2020-05-20 22:59:19 +0900 Seungha Yang + + * sys/mediafoundation/gstmfcaptureengine.cpp: + * sys/mediafoundation/gstmfsourceobject.c: + * sys/mediafoundation/gstmfsourceobject.h: + * sys/mediafoundation/gstmfsourcereader.cpp: + mediafoundation: Fix typo in source object impl. + Part-of: + +2020-05-25 15:36:38 +0300 Sebastian Dröge + + * gst/audiobuffersplit/gstaudiobuffersplit.c: + audiobuffersplit: Unset DISCONT flag if not discontinuous + And also set/unset the RESYNC flag accordingly. + It can happen that the flag is preserved by GstAdapter from the input + buffer. For example if a big input buffer is split into many small ones, + each of the small ones would have the flag set. + All other buffer flags seem safe to keep here if they were set, + including the GAP flag. + Also ensure that the buffer is actually writable before changing any + flags or metadata on it. + Part-of: + +2020-05-25 19:22:50 +0900 Seungha Yang + + * sys/mediafoundation/gstmftransform.cpp: + mftransform: Clear unused output IMediaSample + If MFT doesn't produce encoded output, need to free allocated + output sample and buffer. + Part-of: + +2020-05-25 01:49:00 +1000 Jan Schmidt + + * gst/mpegtsdemux/tsdemux.c: + tsdemux: Handle old streams claiming to be HDMV with Opus + GStreamer 1.16 and earlier produced streams with HDMV registration id + but with Opus audio streams on the stream ID that AC-4 now uses. Make + sure those still play back by special casing the check for AC-4 in HDMV + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1295 + Part-of: + +2020-05-24 06:22:07 +1000 Jan Schmidt + + * ext/srt/gstsrtobject.c: + srt: Don't leak the connection_poll_id on close() + Attempting to reach an inactive SRT peer in caller mode + was leaking an fd every few seconds in the gst_srt_object_close()/open() + loop. + Part-of: + +2020-05-24 19:12:28 +0900 Seungha Yang + + * sys/mediafoundation/gstmfvideoenc.cpp: + mfvideoenc: Fix huge memory leak + Subclass must unref passed GstVideoCodecFrame on GstVideoEncoder::handle_frame() + Part-of: + +2020-05-19 10:47:25 -0400 Thibault Saunier + + * ext/soundtouch/gstpitch.cc: + pitch: Remove useless restriction on number of channel + It handles any number of channels just fine + Part-of: + +2020-05-23 02:33:24 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264decoder.c: + h264decoder: Disallow multiple slice group as we don't support FMO + Even though it might be supported by accelerator, baseclass is not + ready to support it. + Part-of: + +2020-05-23 00:57:23 +0900 Seungha Yang + + * sys/nvcodec/gstnvh264dec.c: + nvh264sldec: Fix wrong scaling list matrix scan order + Quatization matrix of NVDEC should be raster scan order but + h264parser stores it in zig-zag scan order. We need to convert + the matrix. + Part-of: + +2020-05-21 11:20:39 +0000 Andrey Sazonov + + * gst/asfmux/gstasfmux.c: + asfmux: consistent sscanf args usage + Part-of: + +2020-05-20 07:35:28 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codech264dec.c: + v4l2codecs: h264: Add missing break + There was a missing break for the 4:4:4 case which would break the sizeimage + calculation. We don't currently have hardware that supports 4:4:4, so this + code wasn't tested. This was detected by Coverity. + CID 1463592 1463591 + Part-of: + +2020-05-21 14:28:38 +0000 Andrey Sazonov + + * gst-libs/gst/audio/gstplanaraudioadapter.c: + planaraudioadapter: fix possible NULL ptr dereference + Part-of: + +2020-05-21 11:24:51 +0000 Andrey Sazonov + + * gst/sdp/gstsdpdemux.c: + sdpdemux: fix klocwork issues + Part-of: + +2020-05-19 14:58:35 +1000 Matthew Waters + + * sys/androidmedia/gstamcvideodec.c: + amc/videodec: only retrieve the stride/slice-height for raw output + When outputting to a surface, these values may not exist. + As found on a Google Pixel 3. + Part-of: + +2020-05-14 17:13:00 +0200 Stéphane Cerveau + + * ext/openjpeg/meson.build: + meson: add libopenjp2 fallback for openjpeg + As a wrap is now available in gst-build, the fallback + can be used. + Part-of: + +2020-05-13 15:02:41 -0700 Ederson de Souza + + * ext/avtp/meson.build: + avtp: Add libavtp fallback dependence + So that libavtp can be found if added as subproject on gst-build. + Part-of: + +2020-05-01 15:58:09 +0900 Seungha Yang + + * sys/mediafoundation/gstmfdevice.c: + * sys/mediafoundation/gstmfdevice.h: + * sys/mediafoundation/meson.build: + * sys/mediafoundation/plugin.c: + mediafoundation: Add device provider implementation + Only static device probing is supported for now + Part-of: + +2020-05-01 15:12:43 +0900 Seungha Yang + + * sys/mediafoundation/gstmfsourceobject.c: + mfsourceobject: Store selected device path, name and index + Update path, name and index with selected device so that checked by + get_property() after constructed. + Part-of: + +2020-05-20 10:54:21 +0200 Edward Hervey + + * gst/rtmp2/gstrtmp2src.c: + rtmp2src: Answer scheduling query + Just like for rtmpsrc, we must inform downstream that we are a + sequential (i.e. don't do random access efficiently) and + bandwith-limited (i.e. might need buffering downstream) element + Fixes buffering issues with playbin3 + Part-of: + +2020-05-06 12:27:56 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codech264dec.c: + * sys/v4l2codecs/gstv4l2codecvp8dec.c: + * sys/v4l2codecs/gstv4l2decoder.c: + * sys/v4l2codecs/gstv4l2decoder.h: + v4l2slh264dec: Request large enough bitstream buffer + The Cedrus driver would otherwise choose 1KB buffer, which is too small. + This follows what some drivers do, which is simply to use the size a + packed raw image would have. Specifications do not really guaranty any minimum + compression ratio. + Part-of: + +2020-05-05 17:55:19 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codech264dec.c: + * sys/v4l2codecs/gstv4l2codecvp8dec.c: + * sys/v4l2codecs/gstv4l2decoder.c: + * sys/v4l2codecs/gstv4l2decoder.h: + v4l2slh264dec: Add slice based decoder support + This adds support for slice based decoder like the Allwinner/Cedrus driver. In + order to keep things efficient, we hold the sink buffer until we reach the end + of the picture. Note that as we don't know which one is last, we lazy queue the + slices. This effectively introduces one slice latency. + Part-of: + +2020-04-30 15:17:05 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codech264dec.c: + * sys/v4l2codecs/gstv4l2codecvp8dec.c: + v4l2codecdec: Fix error handling + If none of the format the HW produce is supported, the fiter will be NULL, + which would lead to assertion when trying to release it. + Part-of: + +2020-04-30 14:18:47 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2decoder.c: + * sys/v4l2codecs/gstv4l2format.c: + v4l2decoder: Add legacy non-multiplanar support + The Cedrus driver uses the lagacy buffer type (non-mplane). This automatically + detect and use the right v4l2_buf_type. This also affect code using + v4l2_buffer and v4l2_format structures. + Part-of: + +2020-05-05 17:50:22 -0400 Nicolas Dufresne + + * sys/v4l2codecs/linux/h264-ctrls.h: + * sys/v4l2codecs/linux/types-compat.h: + * sys/v4l2codecs/linux/v4l2-common.h: + * sys/v4l2codecs/linux/v4l2-controls.h: + * sys/v4l2codecs/linux/videodev2.h: + v4l2codecs: Update kernel headers + Part-of: + +2020-05-16 21:52:59 +0900 Seungha Yang + + * sys/d3d11/gstd3d11colorconvert.c: + * sys/d3d11/gstd3d11colorconvert.h: + d3d11convert: Fix fallback texture setup when resolution is not even number + When texture format is semi-planar, resolution should be even number, + and add missing P016 format handling + Part-of: + +2020-05-16 21:45:02 +0900 Seungha Yang + + * sys/d3d11/gstd3d11colorconvert.c: + d3d11convert: Fix fallback texture copy + Fix texture copy when input texture has non-zero subresource index + Part-of: + +2020-05-16 20:45:23 +0900 Seungha Yang + + * sys/d3d11/gstd3d11colorconvert.c: + * sys/d3d11/plugin.c: + d3d11: Add support for video rescale and rename element to d3d11convert + GstD3D11ColorConverter implementation is able to rescale video as well. + By doing colorspace conversion and rescale at once, we can save + one cycle of shader pipeline which will can save GPU resource. + Since this element can support color space conversion and rescale, + it's renamed as d3d11convert + Part-of: + +2020-05-16 20:12:33 +0900 Seungha Yang + + * sys/d3d11/gstd3d11colorconvert.c: + * sys/d3d11/gstd3d11utils.c: + * sys/d3d11/gstd3d11utils.h: + d3d11: Move scoring util method for colorspace conversion to colorconvert element + It's used only by colorconvert element. + Part-of: + +2020-05-16 11:14:58 +0200 Víctor Manuel Jáquez Leal + + * gst-libs/gst/codecs/gsth264decoder.c: + codecs: h264decoder: chain finalize vmethod + Part-of: + +2020-05-13 17:23:12 -0400 Nicolas Dufresne + + * gst-libs/gst/codecparsers/gsth264parser.c: + codecparsers: h264: Only set relevant default weight values + This is minor optimization to avoid setting values we don't need. It also + makes debugging easier since only relevant values a non-zero now. + Part-of: + +2020-05-13 15:32:44 -0400 Nicolas Dufresne + + * gst-libs/gst/codecparsers/gsth264parser.c: + codecparsers: h264: Fix default ref list size + The default in PPS was not applied properly. The default does not apply for + I-Slice and l1 default only applies for B-Slice. This fixes the slice values + for num_ref_idx_l0_active_minus1 and num_ref_idx_l1_active_minus1. + Part-of: + +2020-05-12 12:23:15 -0400 Nicolas Dufresne + + * gst-libs/gst/codecs/gsth264decoder.c: + codecs: h264decoder: Use calculated values for max_pic_num/frame_num + The parser pre-calculate these already, just use them. + Part-of: + +2020-05-03 17:30:34 +0200 Víctor Manuel Jáquez Leal + + * gst-libs/gst/codecs/gsth264decoder.c: + * gst-libs/gst/codecs/gsth264decoder.h: + * sys/d3d11/gstd3d11h264dec.c: + * sys/nvcodec/gstnvh264dec.c: + * sys/v4l2codecs/gstv4l2codech264dec.c: + codecs: h264decoder: ref pic lists as decode_slice parameters + Pass reference picture lists to decode_slice() vmethods + Change gstv4l2codech264dec and gstnvh264dec accordingly. + Part-of: + +2020-04-27 16:53:45 +0200 Víctor Manuel Jáquez Leal + + * gst-libs/gst/codecs/gsth264decoder.c: + * gst-libs/gst/codecs/gsth264decoder.h: + codecs: h264decoder: handle reference picture lists + Part-of: + +2020-05-15 14:56:27 -0400 Nicolas Dufresne + + * gst-libs/gst/codecs/gsth264decoder.c: + * gst-libs/gst/codecs/gsth264picture.c: + * gst-libs/gst/codecs/gsth264picture.h: + codecs: h264decoder: Port from GList to GArray + Using glist requires a lot of small allocation at runtime and also + it comes with a slow sort algorithm. As we play with that for very + frame and slices, use GArray instead. Note that we cache some arrays + in the instance as there is no support for stack allocated arrays + in GArray. + Part-of: + +2020-05-08 17:56:48 -0400 Nicolas Dufresne + + * gst-libs/gst/codecs/gsth264decoder.c: + * gst-libs/gst/codecs/gsth264picture.c: + codecs: h264decoder: Make get_long_ref_by_pic_num() transfer none + We don't use the extra reference, so let's just avoid the extra + ref/unref. + Part-of: + +2020-05-06 12:23:34 -0400 Nicolas Dufresne + + * gst-libs/gst/codecs/gsth264decoder.c: + * gst-libs/gst/codecs/gsth264picture.c: + codecs: h264decoder: Make get_short_ref_by_pic_num() transfer none + We don't use the extra reference, so let's just avoid the extra + ref/unref. + Part-of: + +2020-05-19 15:39:50 +0200 Stéphane Cerveau + + * tests/check/meson.build: + tests: fix nalutils file name + The filename was too long causing issues with ccache + Fix https://gitlab.freedesktop.org/gstreamer/gst-build/-/issues/97 + Part-of: + +2020-05-18 14:19:04 +0200 Jan Alexander Steffens (heftig) + + * tests/check/elements/mpegtsdemux.c: + * tests/check/meson.build: + mpegtsdemux: tests: Add simple tests for tsparse and tsdemux + Part-of: + +2020-05-15 17:05:59 +0200 Jan Alexander Steffens (heftig) + + * gst/mpegtsdemux/mpegtsbase.c: + * gst/mpegtsdemux/mpegtsbase.h: + * gst/mpegtsdemux/mpegtsparse.c: + mpegtsdemux: Close a buffer leak and simplify input_done + tsparse leaked input buffers quite badly: + GST_TRACERS=leaks GST_DEBUG=GST_TRACER:9 gst-launch-1.0 audiotestsrc num-buffers=3 ! avenc_aac ! mpegtsmux ! tsparse ! fakesink + The input_done vfunc was passed the input buffer, which it had to + consume. For this reason, the base class takes a reference on the buffer + if and only if input_done is not NULL. + Before 34af8ed66a7c63048ce0bdf59bbe61011d7c6292, input_done was used in + tsparse to pass on the input buffer on the "src" pad. That commit + changed the code to packetize for that pad as well and removed the use + of input_done. + Afterwards, 0d2e9085236ed94622c327f73489e558cc95d05f set input_done + again in order to handle automatic alignment of the output buffers to + the input buffers. However, it ignored the provided buffer and did not + even unref it, causing a leak. + Since no code makes use of the buffer provided with input_done, just + remove the argument in order to simplify things a bit. + Part-of: + +2020-05-17 10:27:03 +0200 Mats Lindestam + + * ext/curl/gstcurlhttpsink.c: + gstcurlhttpsink: Set 'Expect: 100-continue'-header + In the upgrade of libcurl from 7.64.1 to 7.69.1 the + EXPECT_100_THRESHOLD has been increased from 1 Kb to 1 Mb + (see https://curl.haxx.se/mail/lib-2020-01/0050.html). + This caused the gstcurlhttpsink to not being able to rewind + and resend in the case, e.g. response '401 Unauthorized'. + Now the 'Expect: 100-continue'-header is explicitly set in + the gstcurlhttpsink. + Part-of: + +2020-04-29 16:43:06 -0400 Arun Raghavan + + * sys/opensles/openslessink.c: + * sys/opensles/openslessrc.c: + opensles: Remove hard-coded buffer-/latency-time values + These were originally required in early Android versions, but are no + longer needed. + +2020-05-14 20:47:06 +0900 Seungha Yang + + * sys/mediafoundation/gstmfcaptureengine.cpp: + * sys/mediafoundation/gstmfsourceobject.c: + * sys/mediafoundation/gstmfsourceobject.h: + * sys/mediafoundation/gstmfsourcereader.cpp: + mediafoundation: Refactor GstMFSourceObject implementation + * Move CoInitializeEx/CoUninitialize pair into thread function in order to + ensure MTA COM thread + * Move common code to baseclass + Part-of: + +2020-05-14 20:17:33 +0900 Seungha Yang + + * sys/mediafoundation/gstmfh264enc.cpp: + * sys/mediafoundation/gstmfh265enc.cpp: + * sys/mediafoundation/gstmftransform.cpp: + * sys/mediafoundation/gstmftransform.h: + * sys/mediafoundation/plugin.c: + mediafoundation: Remove COM thread constraints from GstMFTransform object + Move CoInitializeEx/CoUninitialize pair into our dedicated thread so that + we can ensure COM thread is MTA. This will remove thread constraints + around plugin init. + Part-of: + +2020-05-15 13:52:06 +1000 Matthew Waters + + * sys/androidmedia/gstamcvideodec.c: + amcvideodec: fix sync meta copying not taking a reference + Fixup for + 9b9e39be248389370e80b429da5a528418733483: amc: Fix crash when a sync_meta survives its sink + https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/603 + Part-of: + +2020-04-13 18:09:55 +0900 J. Kim + + * ext/srt/gstsrtobject.c: + srtobject: add streamid property + The stream id starts with '#!::' according to SRT Access Control[1], + but GstURI requires URI encoded string.This commit introduces additional + property to set the id by normal string. + [1] https://github.com/Haivision/srt/blob/master/docs/AccessControl.md + +2020-05-12 05:00:36 +0530 Nirbheek Chauhan + + * ext/modplug/meson.build: + * ext/openni2/meson.build: + * meson.build: + meson: Pass native: false to add_languages() + This is needed for cross-compiling without a build machine compiler + available. The option was added in 0.54, but we only need this in + Cerbero and it doesn't affect older versions so it should be ok. + Will only cause a spurious warning. + Part-of: + +2020-05-12 10:55:45 -0400 Alex Hoenig + + * gst/mpegtsmux/gstbasetsmux.c: + mpegtsmux: detect and ignore gap buffers + Fixes #1291. Without this, when a stream has gaps and then resumes, the next buffer PTS that is written to the TS is given the PTS of the first gap. + Part-of: + +2020-05-12 16:05:01 +1000 Matthew Waters + + * ext/closedcaption/gstccconverter.c: + ccconverter: check fraction multiply for overflow + It should not happen and if it does, something went very wrong earlier + CID 1463350 + Part-of: + +2020-05-12 16:01:42 +1000 Matthew Waters + + * ext/closedcaption/gstccconverter.c: + ccconverter: tighten up a couple of NULL checks + CID 1463347 + CID 1463346 + CID 1463345 + Part-of: + +2020-05-12 16:00:58 +1000 Matthew Waters + + * ext/closedcaption/gstccconverter.c: + ccconverter: fix unintialized read of mapped output info in error case + We only need to gst_buffer_unmap() if we have gst_buffer_map()ed. In + most cases we can shorten the lenght of time we need to map the output + buffer. Fix similar occurences elsewhere. + CID 1463349 + Part-of: + +2020-05-12 15:24:32 +1000 Matthew Waters + + * ext/closedcaption/gstccconverter.c: + ccconverter: fix uninitialized read in error case + CID 1463351 + Part-of: + +2020-05-10 17:38:11 +0800 Ting-Wei Lan + + * sys/v4l2codecs/gstv4l2codecdevice.c: + * sys/v4l2codecs/linux/media.h: + * sys/v4l2codecs/linux/types-compat.h: + * sys/v4l2codecs/meson.build: + v4l2codecs: Fix compilation error on FreeBSD + This commit does the following things to fix compilation on FreeBSD: + 1. Add required typedefs to linux/types-compat.h. + 2. Remove unnecessary include linux/ioctl.h and replace linux/types.h + with linux/types-compat.h. Both files do not exist on FreeBSD. + 3. Check the header including makedev macro. FreeBSD does not have + sys/sysmacros.h, and including it unconditionally causes error. + Part-of: + +2020-05-11 17:14:09 +1000 Matthew Waters + + * ext/closedcaption/gstccconverter.c: + ccconverter: implement discont handling + Part-of: + +2020-05-07 23:59:30 +1000 Matthew Waters + + * ext/closedcaption/gstccconverter.c: + * tests/check/elements/ccconverter.c: + ccconverter: use a better padding byte sequence for writing cdp + 0xf8 can be interpreted as cea608 data at the beginning of a cdp packet + as the cc_valid bit is not checked when cc_valid in (0b00 or 0b01). + Part-of: + +2020-03-19 17:42:13 +1100 Matthew Waters + + * ext/closedcaption/gstccconverter.c: + * ext/closedcaption/gstccconverter.h: + * tests/check/elements/ccconverter.c: + ccconverter: split temporary storage into 3 + Instead of storing the raw cc_data, store the 2 cea608 fields individually + as well as the ccp data. + Simply copying the input cc_data to the output cc_data violates a number of + requirements in the cea708 specification. The most prominent being, that + cea608 triples must be placed at the beginning of each cdp. + We also need to comply with the framerate-dpendent limits for both the + cea608 and the ccp data which may involve splitting or merging some + cea608 data but not ccp data or vice versa. + Part-of: + +2020-03-17 17:23:44 +1100 Matthew Waters + + * ext/closedcaption/gstccconverter.c: + * tests/check/elements/ccconverter.c: + ccconvert: compact input cc_data where possible + Skip over padding cc_data triples. + Part-of: + +2020-03-13 10:54:02 +1100 Matthew Waters + + * ext/closedcaption/gstccconverter.c: + * ext/closedcaption/gstccconverter.h: + * tests/check/elements/ccconverter.c: + ccconverter: implement support for CDP framerate conversions + - Any format involving CDP is supported. + - Time codes (if present) are scaled as well. + Part-of: + +2020-03-12 16:08:54 +1100 Matthew Waters + + * tests/check/elements/ccconverter.c: + * tests/check/meson.build: + tests/ccconverter: test the time codes are successfully passed through + Where time codes are not stored in the caption data themselves + Part-of: + +2020-03-12 15:06:46 +1100 Matthew Waters + + * ext/closedcaption/gstccconverter.c: + * ext/closedcaption/gstccconverter.h: + ccconverter: introduce define for max cdp packet length + Part-of: + +2020-03-12 15:01:02 +1100 Matthew Waters + + * ext/closedcaption/gstccconverter.c: + ccconverter: don't rely on external state in *_internal() + This allows using the _internal() variants for simply converting some + caption data without relying on any external state. + Part-of: + +2020-03-12 14:06:49 +1100 Matthew Waters + + * ext/closedcaption/gstccconverter.c: + * ext/closedcaption/gstccconverter.h: + * tests/check/elements/ccconverter.c: + ccconverter: cc_count limits are per framerate + Enforce this and add a test for cdp input being too large. + Part-of: + +2020-03-12 12:54:41 +1100 Matthew Waters + + * ext/closedcaption/gstccconverter.c: + ccconverter: refactor cdp id, fps, max_cc_count into a table + Part-of: + +2020-03-12 09:55:40 +1100 Matthew Waters + + * ext/closedcaption/gstccconverter.c: + ccconverter: pivot to implementing generate_output + Will make a n-n buffer element much easier to implement. + Part-of: + +2020-05-09 19:59:46 +0200 Jan Alexander Steffens (heftig) + + * gst-libs/gst/vulkan/gstvkerror.c: + vulkan: Drop use of VK_RESULT_BEGIN_RANGE + This was removed in Vulkan 1.2.140. + > Shortly after 2020-04-24, we will be removing the automatically + > generated `VK_*_BEGIN_RANGE`, `VK_*_END_RANGE`, and `VK_*_RANGE_SIZE` + > tokens from the Vulkan headers. These tokens are currently defined for + > some enumerated types, but are explicitly not part of the Vulkan API. + > They existed only to support some Vulkan implementation internals, + > which no longer require them. We will be accepting comments on this + > topic in [#1230], but we strongly suggest any external projects using + > these tokens immediately migrate away from them. + [#1230]: https://github.com/KhronosGroup/Vulkan-Docs/issues/1230 + Part-of: + +2020-05-08 22:36:01 +0300 Sebastian Dröge + + * gst/audiobuffersplit/gstaudiobuffersplit.c: + * gst/audiobuffersplit/gstaudiobuffersplit.h: + audiobuffersplit: Perform discont tracking on running time + Otherwise we would have to drain on every segment event. Like this we + can handle segment events that don't cause a discontinuity in running + time to be handled without draining. + Part-of: + +2020-05-08 21:36:44 +0300 Sebastian Dröge + + * gst/audiobuffersplit/gstaudiobuffersplit.c: + * gst/audiobuffersplit/gstaudiobuffersplit.h: + audiobuffersplit: Keep incoming and outgoing segments separate + We might have to drain already queued input based on the old segment + before forwarding the new segment event. The new segment is only + forwarded after a discont as otherwise we might cause unnecessary + timestamp jumps as we output buffers timestamped based on sample counts. + Part-of: + +2020-04-30 16:01:13 +0000 Chris Ayoup + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/gstwebrtcice.c: + * ext/webrtc/gstwebrtcice.h: + webrtc: move filtering properties to webrtcice + We want webrtcbin to only expose properties that are defined in JSEP, so + these additional properties should be moved out. In order to access + them, the webrtcice instance is exposed from webrtcbin. + Part-of: + +2020-04-17 18:00:59 +0000 Chris Ayoup + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/gstwebrtcice.c: + * ext/webrtc/gstwebrtcice.h: + webrtc: allow setting local IP addresses + If a local IP address is specified, ICE gathering can be much faster + in environments where there are multiple IP addreses but only some are + usable (for example, if you are running docker on the machine). + Part-of: + +2020-04-16 22:37:35 +0000 Chris Ayoup + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/gstwebrtcice.c: + webrtc: Allow toggling TCP and UDP candidates + Add some properties to allow TCP and UDP candidates to be toggled. This + is useful in cases where someone is using this element in an environment + where it is known in advance whether a given transport will work or not + and will prevent wasting time generating and checking candidate pairs + that will not succeed. + Part-of: + +2020-04-02 10:44:31 +0800 Haihao Xiang + + * sys/msdk/gstmsdkvpp.c: + msdkvpp: clear the parameters after closing the session + Otherwise the stale values are used for the new process. + Part-of: + +2020-05-10 11:23:02 +0300 Sebastian Dröge + + * ext/spandsp/gstspanplc.c: + spanplc: Don't segfault when retrieving the stats property without a spanplc context + For example when trying to get the property value in NULL state. + Part-of: + +2020-05-10 11:16:44 +0300 Sebastian Dröge + + * gst/onvif/gstrtponviftimestamp.c: + onviftimestamp: Add missing `break` in set_property() + Part-of: + +2020-05-07 14:05:16 -0400 Nicolas Dufresne + + * tests/check/elements/h265parse.c: + test: h265parse: Test parsing buffer the ends with half a NAL header + This test cover the case where we are parsing, but our current buffers ends + with half the NAL header (which is 2 bytes in HEVC). Previously we would + throw an error message on the bus. + Part-of: + +2020-05-07 13:59:33 -0400 Nicolas Dufresne + + * gst-libs/gst/codecparsers/gsth265parser.c: + h265parse: Ensure parsing ends on start-code + full header + The parser is used all over the place assuming that after calling + gst_h265_parser_identify_nalu(), the start-code found is can also be + identified. In H264 this works, because scan_for_start_code rely on + gst_byte_reader_masked_scan_uint32() that ensures that 1 byte passed the 3 + bytes start code is found. But for HEVC, we need two bytes to identify the + following NAL. + This patch will return NO_NAL_END, even if a start code is found in the case + there was not enough bytes. This solution was chosen to maintain backward + compatibility, and reduce complexicity. + Fixes #1287 + Part-of: + +2020-05-07 11:09:23 -0400 Nicolas Dufresne + + * tests/check/elements/h264parse.c: + * tests/check/elements/h265parse.c: + test: h264/h265: Add test for four bytes start code initial skip + This test detects if the parser have skipped too much and dropped meaninful + NALs. + Part-of: + +2020-05-07 12:02:40 -0400 Nicolas Dufresne + + * tests/check/elements/h264parse.c: + * tests/check/elements/h265parse.c: + * tests/check/elements/parser.c: + * tests/check/elements/parser.h: + test: h264/h265: Constify all test buffers + This ensure that no test modify other tests data. + Part-of: + +2020-05-07 11:06:45 -0400 Nicolas Dufresne + + * gst/videoparsers/gsth264parse.c: + * gst/videoparsers/gsth265parse.c: + h264/h265parse: Fix initial skip + Account for start codes possibly be 4 bytes. For HEVC, also take into + account that we might be missing only one of the two identification + bytes. + Part-of: + +2020-05-07 08:29:28 -0400 Nicolas Dufresne + + * gst/videoparsers/gsth265parse.c: + h265parse: Ensure correct timestamps + If the input has a miss-placed filler zero byte (e.g. a filler without a 4 + bytes start code on the next NAL), we would endup using the same timestamp + twice. Ask the base class to read the timestamp from the buffer were the NAL + actually starts. + Part-of: + +2020-05-07 07:43:30 -0400 Nicolas Dufresne + + * gst-libs/gst/codecparsers/gsth264parser.c: + h264parser: Removed impossible error case + Same as done for H264, this error was trying to catch the case where we had + a start code without any bytes afterward. This will never happen since the + start code scanner only returns a match if there is one byte after start + code (pattern 0x00000100 / mask 0xffffff00). In H264, once byte is sufficient + to identify the NALU. + Part-of: + +2020-05-06 22:28:34 -0400 Nicolas Dufresne + + * gst-libs/gst/codecparsers/gsth264parser.c: + * gst/videoparsers/gsth264parse.c: + * tests/check/elements/h264parse.c: + h264parse: Properly handle 4 bytes start code + This will stop stripping four bytes start code. This was fixed and broken + again as it was causing the a timestamp shift. We now call + gst_base_parse_set_ts_at_offset() with the offset of the first NAL to ensure + that fixing a moderatly broken input stream won't affect the timestamps. We + also fixes the unit test, removing a comment about the stripping behaviour not + being correct. + Part-of: + +2020-05-06 22:18:12 -0400 Nicolas Dufresne + + * gst-libs/gst/codecparsers/gsth265parser.c: + h265parser: Fix NAL size check for identification + Unlike H264, H265 requires 2 bytes after the start code to allow NAL + identification. This would otherwise report a broken NAL and skip + important data. + Fixes #1287 + Part-of: + +2020-05-06 22:13:45 -0400 Nicolas Dufresne + + * gst-libs/gst/codecparsers/gsth265parser.c: + h265parser: Removed impossible error case + This error was trying to catch the case where we had a start code without any + bytes afterward. This will never happen since the start code scanner only returns + a match if there is one byte adter start code (pattern 0x00000100 / mask + 0xffffff00). + Part-of: + +2020-04-29 16:19:08 +0800 Xu Guangxin + + * sys/msdk/gstmsdkbufferpool.c: + msdk: bufferpool: set alignment to video meta + else gst_video_meta_validate_alignment will report error like + "videometa gstvideometa.c:416:gst_video_meta_validate_alignment: Stride of plane 0 defined in meta (384) is different from the one computed from the alignment (320)" + Part-of: + +2020-05-06 20:04:17 +0300 Sebastian Dröge + + * gst/timecode/gsttimecodestamper.c: + timecodestamper: Unref latency query after usage + Part-of: + +2020-05-06 11:47:56 +0300 Sebastian Dröge + + * ext/musepack/gstmusepackdec.c: + musepackdec: Don't fail all queries if no sample rate is known yet + The sample rate is only needed for the POSITION/DURATION queries and we + would otherwise fail important queries like the CAPS query. + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/498 + Part-of: + +2020-05-01 07:46:56 +0200 Luka Blaskovic + + * ext/opencv/meson.build: + opencv: allow compilation against 4.3.x + Part-of: + +2020-05-06 15:36:19 +1000 Matthew Waters + + * ext/webrtc/webrtcdatachannel.c: + * tests/check/elements/webrtcbin.c: + webrtc: fix an off-by-one calculating low-threshold + We were not signalling low-threshold when the previous amount was at + exactly the low-threshold mark. + Part-of: + +2020-05-06 15:35:26 +1000 Matthew Waters + + * tests/check/elements/webrtcbin.c: + webrtc: fix a slightly racy test + There is no guarantee that the peer data channel has transitioned to + open when we do. + Part-of: + +2020-05-06 15:49:05 +1000 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + webrtc: remove debugging leftover + Part-of: + +2020-05-06 00:30:34 +1000 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/gstwebrtcbin.h: + * ext/webrtc/sctptransport.c: + * ext/webrtc/utils.h: + * ext/webrtc/webrtcdatachannel.c: + webrtc: always reply to a promise + Otherwise, we defeat the purpose of a promise. + We were not replying when the state was closed. + Part-of: + +2020-05-06 00:25:45 +1000 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/gstwebrtcice.c: + * ext/webrtc/gstwebrtcice.h: + webrtc: name threads based on the element name + Makes debugging a busy loop possibly easier + Part-of: + +2020-05-05 17:15:51 +1000 Matthew Waters + + * tests/check/elements/webrtcbin.c: + tests/webrtc: fix a data channel leak in a test + test_data_channel_create_after_negotiate overrides the data_channel_data + without ever freeing it. + Part-of: + +2020-05-05 17:14:46 +1000 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + webrtc: correctly use the pad template + GstHarness uses this for releasing request pads correctly. Fixes + numerous leaks in the webrtc unit tests. + Part-of: + +2020-05-05 14:35:10 +1000 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + webrtc: Fix a couple of renegotiation races + When negotiating the SDP we should only connect the streams that are + actually mentioned in the SDP. All other streams are not relevant at + this time and would likely be part of a future SDP update. Fixes a + couple of the renegotiation webrtc unit tests. + Part-of: + +2020-05-05 14:33:34 +1000 Matthew Waters + + * tests/check/elements/webrtcbin.c: + tests/webrtc: move bus thread creation earlier + Fixes a small deadlock race where the bus watch GSource could execute before + the unlock mutex GSource. + Part-of: + +2020-05-04 14:39:45 +1000 Matthew Waters + + * tests/check/meson.build: + tests: add libnice to the plugin loading whitelist + Allows webrtcbin to actually unit test some negotiation scenarios. + Without this, only two of the possible 33 tests are being executed. + Part-of: + +2020-05-05 12:01:21 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codecvp8dec.c: + v4l2slvp8dec: Flip the meaning of segment_feature_mode + In section 9.3.4 a), segment_feature_mode have 0 for absolute and 1 for delta, + while in 19.2, it says the opposite. But the reference code, which usually + rules over the text state that 1 means absolute: + if (hdr->update_data) + { + hdr->abs = bool_get_bit(bool); + And uses it with that meaning to decide weither to override the existing value + or just add the detla. This fixes multiple decoding issues. + Part-of: + +2020-05-04 15:33:39 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codecvp8dec.c: + v4l2slvp8dec: Copy header version + This field was not copied. + Part-of: + +2020-05-04 14:54:23 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codecvp8dec.c: + v4l2slvp8dec: Add debugging for reference frames + This simply trace the frame number of the references used for decoding. + Part-of: + +2020-05-04 14:52:45 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codecvp8dec.c: + v4l2slvp8dec: Ensure width/height is always set + Our parser strictly read the bitstream. As it's known from DXVA that always + having a valid width/height might be needed, use the cached width/height + instead of the value from the parser. This didn't impact Hantro driver. + Part-of: + +2020-05-04 14:52:02 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codecvp8dec.c: + v4l2slvp8dec: Fix debug category name + Part-of: + +2020-05-05 17:40:51 +0200 Edward Hervey + + * ext/iqa/iqa.c: + iqa: Fix all leaks in error path + CID #1456049 + CID #1456080 + CID #1456083 + Part-of: + +2020-03-29 00:45:47 +0800 He Junyan + + * tests/check/libs/h265parser.c: + test: h265parser: Add a test case for SCC extension. + Part-of: + +2020-03-28 14:46:13 +0800 He Junyan + + * gst-libs/gst/codecparsers/gsth265parser.c: + * gst-libs/gst/codecparsers/gsth265parser.h: + * tests/check/libs/h265parser.c: + libs: parser: h265: Add SCC extension support. + Add support for screen content coding extensions profiles. + Part-of: + +2020-05-06 01:25:04 +0900 Seungha Yang + + * sys/d3d11/gstd3d11vp8dec.c: + d3d11vp8dec: Remove useless assign operation + It's already been done in the line just above. + Part-of: + +2020-05-05 16:07:40 +0200 Edward Hervey + + * tests/check/elements/dash_mpd.c: + check: Fix dash mpd unit test + Unexpected critical/warning: g_object_set_is_valid_property: object class 'GstMPDBaseURLNode' has no property named 'service location' + Stack trace: + gst_debug_get_stack_trace (gstinfo.c:3021) + gst_check_log_critical_func (gstcheck.c:281) + g_logv (gmessages.c:1350) + g_log (gmessages.c:1415) + g_object_set_valist (gobject.c:2327) + gst_mpd_client_add_baseurl_node (gstmpdclient.c:3142) + dash_mpdparser_check_mpd_client_set_methods (dash_mpd.c:6192) + srunner_run_tagged (check_run.c:465) + gst_check_run_suite (gstcheck.c:1086) + main (dash_mpd.c:6521) + __libc_start_main (libc-start.c:308) + _start (/home/bilboed/work/devel/gst-build/build/subprojects/gst-plugins-bad/tests/check/elements_dash_mpd:0x40554a) + +2020-05-05 20:32:53 +0900 Seungha Yang + + * sys/d3d11/gstd3d11window.cpp: + d3d11window: Fix processor output view resource leak + Because this object holds reference to native d3d11 device handle internally, + related native d3d11 objects would be leaked as well. + Part-of: + +2020-05-01 14:19:56 +1000 Matthew Waters + + * ext/sctp/sctpassociation.c: + sctp: enable usrsctp debug when supported + Part-of: + +2020-05-03 10:05:32 +0000 Tim-Philipp Müller + + * tests/check/elements/curlhttpsrc.c: + tests: curlhttpsrc: fix compiler warning on raspbian + tests/check/elements/curlhttpsrc.c:142:14: warning: format ‘%lu’ + expects argument of type ‘long unsigned int’, but argument 8 has + type ‘gsize’ {aka ‘unsigned int’} + Part-of: + +2020-05-03 09:59:45 +0000 Tim-Philipp Müller + + * sys/nvcodec/gstnvh264dec.c: + nvcodec: fix compiler warning in certain setups + Fixes gstnvh264dec.c:648:12: warning: unused variable ‘ret’ + compiler warning on raspbian where HAVE_NVCODEC_GST_GL is + not defined. + Part-of: + +2020-04-03 10:41:44 -0700 Ederson de Souza + + * ext/avtp/gstavtpsink.c: + avtpsink: Log that AVTPDU transmission failure is due lateness + As ENOBUFS is not really clear about what is going on, let's check + socket error queue to see if packets are being dropped due being late. + Part-of: + +2020-04-03 10:41:31 -0700 Ederson de Souza + + * ext/avtp/gstavtpsink.c: + avtpsink: Accept buffers that fall out of segment + Proper calculate running time for buffers that are out of current + segment and try to honor them. + A typical case is for AVTP packets coming from avtpcvfpay element, as + those may have DTS that falls out of segment (which is about PTS). + By using gst_segment_to_running_time_full(), avtpsink can properly + calculate when to transmit those buffers. + Part-of: + +2020-04-03 10:41:04 -0700 Ederson de Souza + + * ext/avtp/gstavtpcvfpay.c: + avtpcvfpay: Warn about timestamp issues on non-flushing seek + Seek events will cause new segments to be sent to avtpcvfpay, and for + flushing seeks, a pipeline running time reset. This running time + reset, which effectively changes pipeline base time, will cause + avtpcvfpay element to generate incorrect DTS for the initial set of + buffers sent after FLUSH_STOP. + This happens due the fact that base time change happens only when the + sink gets the first buffer after the FLUSH_STOP - so avtpcvfpay used + the wrong base time to do its calculations. + However, if the pipeline is paused before the seek, sink will update + base time when pipeline state goes to PLAYING again, before avtpcvfpay + gets the first buffers after the flush. Then avtpcvfpay element will be + able to normally calculate DTS for the outgoing packets. + This patch simply adds a warning message in case a flushing seek is + performed on a playing pipeline. + Part-of: + +2020-04-03 10:40:43 -0700 Ederson de Souza + + * ext/avtp/gstavtpcvfpay.c: + * ext/avtp/gstavtpcvfpay.h: + * tests/check/elements/avtpcvfpay.c: + avtpcvfpay: Ensure NAL fragments are transmitted following stream specs + TSN streams are expected to send packets to the network in a well + defined "pace", which is arbitrarily defined for each stream. This pace + is defined by the "measurement interval" property of a stream. + When the AVTP CVF payloader element - avtpcvfpay - fragments a video + frame that is too big to be sent to the network, it currently defines + that all fragments should be transmitted at the same time (via DTS + property of GstBuffers generated, as sink will use those to time the + transmission of the AVTPDU). This doesn't comply with stream definition, + which also has a limit on how many packets can be sent on a given + measurement interval. + This patch solves that by spreading in time the DTS of the GstBuffers + containing the AVTPDUs. Two new properties, "measurement-interval" and + "max-interval-frames", added to avptcvfpay element so that it knows + stream measurement interval and how many AVTPDUs it can send on any of + them. More details on the method used to proper spread DTS/PTS according + to measurement interval can be found in a code commentary inside this patch. + Tests also added for the new property and behaviour. + Part-of: + +2020-02-24 22:38:39 +0800 Georg Ottinger + + * gst-libs/gst/codecparsers/gstav1parser.c: + * gst-libs/gst/codecparsers/gstav1parser.h: + * gst-libs/gst/codecparsers/meson.build: + * tests/check/libs/av1parser.c: + * tests/check/meson.build: + libs: parser: Adds AV1 parser. + This is the first version of AV1 parser implementation in GStreamer. + A test file is also provied with several test cases. It contains a + test sequence taken from the aom testdata set, with one key and one + inter-frame. The same test sequence has been reencoded to annexb. + testdata is taken from aom testdata (and reencoded for annexb) as well + as handcrafted testcases. Once reference testdata is available, the + testing could be imporved aswell. + Co-author: He Junyan + Co-author: Víctor Manuel Jáquez Leal + Part-of: + +2020-05-01 14:43:55 +0100 Tim-Philipp Müller + + * gst/autoconvert/gstautoconvert.h: + autoconvert: fix compiler warnings with g_atomic on recent GLib versions + The volatile is not needed here and causes compiler warnings + with newer GLib versions. + gstautoconvert.c: In function ‘gst_auto_convert_dispose’ (and elsewhere): + glib/gatomic.h:108:3: warning: initialization discards ‘volatile’ qualifier from pointer target type [-Wdiscarded-qualifiers] + gstautoconvert.c:224:24: note: in expansion of macro ‘g_atomic_pointer_get’ + 224 | GList *factories = g_atomic_pointer_get (&autoconvert->factories); + Part-of: + +2020-05-01 01:17:08 +1000 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: also mark data channel transports as active + Fixes negotiation of a bundled sdp with only a data channel. + Without marking the transport as active, we would never unblock the + transportreceivebin and thus no data would ever reach us. + Part-of: + +2020-05-01 00:47:53 +1000 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/webrtcsdp.c: + * ext/webrtc/webrtcsdp.h: + webrtcbin: fix bundle none case with remote offer bundling + If the remote is bundling, but we are not and remote is offering. + we cannot put the remote media sections into a bundled transport as that + is not how we are going to respond. + This specific failure case was that the remote ICE credentials were + never set on the ice stream and so ice connectivity would fail. + Technically, this whole bunde-policy=none handling should be removed + eventually when we implement bundle-policy=balanced. Until such time, + we have this workaround. + Part-of: + +2019-09-26 18:12:36 -0700 Vedang Patel + + * tests/check/elements/avtpcrfutil.c: + * tests/check/meson.build: + tests: add tests for functions in gstavtpcrfutil.c + This adds tests for the helper functions in ext/avtp/gstavtpcrfutils.c + +2019-09-26 18:11:42 -0700 Vedang Patel + + * tests/check/elements/avtpcrfcheck.c: + * tests/check/meson.build: + tests: Add the tests for CRF Checker element + This adds tests to ensure the avtpcrfchecker element validates and drops the + packets which do not match the CRF Synchronization criteria. + +2019-10-14 13:56:49 -0700 Vedang Patel + + * tests/check/elements/avtpcrfbase.c: + * tests/check/meson.build: + tests: Add tests for GstAvtpCrfBase base class. + This adds tests which test the functions which do not call any external + syscalls and the properties. + +2019-10-14 13:56:36 -0700 Vedang Patel + + * tests/check/elements/avtpcrfsync.c: + * tests/check/meson.build: + tests: Add tests for CRF Synchronizer element + This adds tests to validate whether the avtpcrfsync element applies the + adjustment correctly. + Also, the infrastructure to include additional source files while compiling + is added. This change is exactly the same as the one in gst-plugins-good. + +2019-10-14 13:55:57 -0700 Vedang Patel + + * ext/avtp/gstavtp.c: + * ext/avtp/gstavtpcrfcheck.c: + * ext/avtp/gstavtpcrfcheck.h: + * ext/avtp/meson.build: + avtp: Introduce the CRF Check element + This commit introduces the AVTP Clock Reference Format (CRF) Checker + element. This element re-uses the GstAvtpCrfBase class introduced along + with the CRF Synchronizer element. + This element will typically be used along with the avtpsrc element to + ensure that the AVTP timestamp (and H264 timestamp in case of CVF-H264 + packets) is "aligned" with the incoming CRF stream. Here, "aligned" means + that the timestamp value should be within 25% of the period of the media + clock recovered from the CRF stream. + The user can also set an option (drop-invalid) in order to drop any packet + whose timestamp is not within the thresholds of the incoming CRF stream. + +2020-02-05 16:17:39 -0800 Vedang Patel + + * ext/avtp/gstavtp.c: + * ext/avtp/gstavtpcrfbase.c: + * ext/avtp/gstavtpcrfbase.h: + * ext/avtp/gstavtpcrfsync.c: + * ext/avtp/gstavtpcrfsync.h: + * ext/avtp/gstavtpcrfutil.c: + * ext/avtp/gstavtpcrfutil.h: + * ext/avtp/meson.build: + avtp: Introduce the CRF Sync Element + This commit introduces the AVTP Clock Reference Format (CRF) Synchronizer + element. This element implements the AVTP CRF Listener as described in IEEE + 1722-2016 Section 10. + CRF is useful in synchronizing events within different systems by + distributing a common clock. This is useful in a scenario where there are + multiple talkers who are sending data to a single listener which is + processing that data. E.g. CCTV cameras on a network sending AVTP video + streams to a base station to display on the same screen. + It is assumed that all the systems are already time-synchronized with each + other. So, the AVTP Talker essentially adjusts the AVTP Presentation Time + so it's phase-locked with the reference clock provided by the CRF stream. + There are 2 different roles of systems which participate in CRF data + exchange. A system can either be a CRF Talker, which samples it's own + clock and generates a stream of timestamps to transmit over the network, or + a CRF Listener, the system which receives the generated timestamps and + recovers the media clock from the timestamps. It then adjusts it's own + clock to align with recovered media clock. The timestamps generated by the + talker may not be continuous and the listener might have to interpolate + some timestamps to recover the media clock. The number of timestamps to + interpolate is mentioned in the CRF stream AVTPDU (Refer IEEE 1722-2016 + Section 10.4 for AVTPDU structure). Only CRF Listener has been implemented + in this commit. + The CRF Sync element will create a separate thread to listen for the CRF + stream. This thread will calculate and store the average period of the + recovered media clock. The pipeline thread will use this stored period + along with the first timestamp of the latest CRF AVTPDU received to + calculate adjustment for timestamps in the audio/video streams. In case of + CRF AVTPDUs with single timestamp, two consecutive CRF AVTPDUs will be used + to figure out the average period of the recovered media clock. + In case of H264 streams, both AVTP timestamp and H264 timestamp will be + adjusted. + In the future commits, another "CRF Checker" element will be introduced + which will validate the timestamps on the AVTP Listener side. Which is why + a lot of code has been implemented as part of the gstcrfbase class. + +2019-12-13 11:28:08 -0800 Ederson de Souza + + * gst/debugutils/gstclockselect.c: + * gst/debugutils/gstclockselect.h: + * tests/check/elements/clockselect.c: + clockselect: Add TAI clock support + Via new value for property clock-id, "tai", it's possible to use + GST_CLOCK_TYPE_TAI as pipeline clock. + Part-of: + +2020-01-27 15:16:12 -0800 Ederson de Souza + + * tests/check/elements/clockselect.c: + clockselect: Remove non-sense comment + Commentary appears to assume `gst_harness_find_element` return value was + "transfer none", but it is not the case. So, element must be unrefed + before the end. + Part-of: + +2020-01-23 15:57:34 +0000 krivoguzovVlad + + * ext/srt/gstsrtobject.c: + Update gstsrtobject.c + Part-of: + +2019-07-30 17:09:55 -0400 Olivier Crête + + * gst/rist/gstristrtpdeext.c: + * tests/check/elements/ristrtpext.c: + ristrtpdeext: Expose the largest sequence number received + Part-of: + +2020-03-18 17:34:47 -0400 Olivier Crête + + * gst/rist/gstristrtpdeext.c: + * tests/check/elements/ristrtpext.c: + ristrtpdeext: Update RTP header extension packet to latest spec + Part-of: + +2020-03-18 17:14:14 -0400 Olivier Crête + + * gst/rist/gstristrtpext.c: + * tests/check/elements/ristrtpext.c: + ristrtpext: Update RTP header extension packet to latest spec + Part-of: + +2019-07-31 12:01:07 -0400 Olivier Crête + + * gst/rist/gstristsink.c: + * gst/rist/gstristsrc.c: + rist: Document main profile support + Part-of: + +2019-07-29 17:53:21 -0400 Olivier Crête + + * gst/rist/gstristsrc.c: + ristsrc: Add ristrtpdeext to the pipeline + Part-of: + +2019-07-29 13:58:37 -0400 Olivier Crête + + * gst/rist/gstristsink.c: + ristsink: Add ristrtpext to sink + Part-of: + +2019-07-26 17:57:40 -0400 Olivier Crête + + * gst/rist/gstristsink.c: + ristsink: Receive RIST seqnum ext and feed it to rtxsend + Part-of: + +2019-07-26 17:43:57 -0400 Olivier Crête + + * gst/rist/gstristsink.c: + ristsink: Pass the session id to the on-app-rtcp callback + Part-of: + +2019-07-26 17:14:14 -0400 Olivier Crête + + * gst/rist/gstrist.h: + * gst/rist/gstristrtxsend.c: + ristrtxsend: Use externally given seqnum extension when available + Part-of: + +2019-07-26 16:50:21 -0400 Olivier Crête + + * gst/rist/gstristrtxsend.c: + ristrtxsend: Store sent packets with extended seqnum + Part-of: + +2019-07-26 16:49:51 -0400 Olivier Crête + + * gst/rist/gstrist.h: + * gst/rist/gstristplugin.c: + * gst/rist/gstristrtpext.c: + rist: Factor our seqnum extension code + Part-of: + +2019-07-24 17:32:07 -0400 Olivier Crête + + * tests/check/elements/ristrtpext.c: + * tests/check/meson.build: + rist: Add test for rtp ext code + Part-of: + +2019-07-23 17:27:06 -0400 Olivier Crête + + * gst/rist/gstristrtpdeext.c: + rist: Drop packets that are more than G_MAXINT16 seqnum late + Part-of: + +2019-07-23 17:26:16 -0400 Olivier Crête + + * gst/rist/gstristrtpext.c: + rist: Insert RTP seqnum extension header + Part-of: + +2019-07-12 11:43:26 -0400 Olivier Crête + + * gst/rist/gstrist.h: + * gst/rist/gstristplugin.c: + * gst/rist/gstristrtpdeext.c: + * gst/rist/gstristrtpext.c: + * gst/rist/meson.build: + rist: Add element to remove the header extension + Part-of: + +2019-07-11 18:53:00 -0400 Olivier Crête + + * gst/rist/gstrist.h: + * gst/rist/gstristplugin.c: + * gst/rist/gstristrtpext.c: + * gst/rist/meson.build: + rist: Add element that inserts the RTP header extension + Currently can suppress the TS null packets, but can't insert + the seqnum extension yet. + Part-of: + +2020-05-01 01:51:10 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264decoder.c: + h264decoder: Allow frame gap even if it's not allowed by SPS + It's most likely the case where some frames were dropped for some reason + (e.g., broken stream, network loss or so). However, decoder might be able to + decode following frames even if some frames are visually broken. + Part-of: + +2020-04-29 22:01:32 +1000 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: only start gathering on local descriptions + If we are in a state where we are answering, we would start gathering + when the offer is set which is incorrect for at least two reasons. + 1. Sending ICE candidates before sending an answer is a hard error in + all of the major browsers and will fail the negotiation. + 2. If libnice ever adds the username fragment to the candidate for + ice-restart hardening, the ice username and fragment would be + incorrect. + JSEP also hints that the right call flow is to only start gathering when + a local description is set in 4.1.9 setLocalDescription + "This API indirectly controls the candidate gathering process." + as well as hints throughout other sections. + Part-of: + +2020-04-29 19:42:05 +0900 Seungha Yang + + * ext/webrtc/webrtcdatachannel.h: + webrtc: Correct symbol visibility to fix build warning on Windows + GstWebRTCDataChannel is fully internal of plugin + webrtcdatachannel.c(50): warning C4273: 'gst_webrtc_data_channel_get_type': inconsistent dll linkage + Part-of: + +2020-04-29 15:12:36 -0400 Thibault Saunier + + * ext/lv2/gstlv2.c: + * ext/lv2/gstlv2.h: + * ext/lv2/gstlv2filter.c: + * ext/lv2/gstlv2utils.c: + lv2: Namespace global variables and explicitly make them private + And fix a LV2_PORT_GROUPS__rearLeft/LV2_PORT_GROUPS__rearRight typo + Part-of: + +2020-03-20 15:49:06 +0100 Debarshi Ray + + * ext/lv2/gstlv2.c: + * ext/lv2/gstlv2.h: + lv2: Make it build with -fno-common + GCC 10 defaults to -fno-common. This means that global variables shared + across multiple translation units should be declared as 'extern' in + header files and defined in exactly one C file. See: + https://gcc.gnu.org/gcc-10/porting_to.html + https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1125 + Part-of: + +2020-04-30 02:41:07 +0900 Seungha Yang + + * sys/d3d11/gstd3d11h264dec.c: + d3d11h264dec: Rearrange the order of supported profiles in caps + constrained-baseline profile is much preferred than baseline. + Part-of: + +2020-04-30 02:25:35 +0900 Seungha Yang + + * sys/nvcodec/gstnvh264dec.c: + nvh264sldec: Allow constrained-baseline and baseline profiles + Like d3d11h264dec, we need to relax the condition for profiles of nvh264sldec + Part-of: + +2020-04-23 23:25:21 +0900 Seungha Yang + + * sys/d3d11/gstd3d11h264dec.c: + d3d11h264dec: Add constrained-baseline and baseline profile + Both profiles are expected to be supported profile by DXVA hardware + Part-of: + +2020-04-27 20:26:54 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codech264dec.c: + * sys/v4l2codecs/gstv4l2codecvp8dec.c: + * sys/v4l2codecs/gstv4l2decoder.c: + * sys/v4l2codecs/gstv4l2decoder.h: + * sys/v4l2codecs/meson.build: + v4l2codecs: Factor out plugin registration + This introduce a common place for generic functions and factor out the plugin + registration code. This code is nearly identical between implementation. + Part-of: + +2020-04-27 20:18:52 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2decoder.c: + v4l2decoder: Relax width/height return value check + The driver adjust the width/height to coded size. This was not an issue for + H264, as the coded size is in the bitstream, but is an issue with VP8. + Part-of: + +2020-04-24 16:15:25 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codecvp8dec.c: + * sys/v4l2codecs/gstv4l2codecvp8dec.h: + * sys/v4l2codecs/linux/vp8-ctrls.h: + * sys/v4l2codecs/meson.build: + * sys/v4l2codecs/plugin.c: + v4l2codecs: Add VP8 decoder + This is derived from the H264 decoder, some boiler plate will be factored out + in the following commits. + Part-of: + +2020-04-28 14:55:00 -0400 Joshua M. Doe + + * sys/mediafoundation/gstmfutils.cpp: + * sys/mediafoundation/gstmfutils.h: + mfvideosrc: add GRAY16_LE format support + FOURCC "Y16 " is used by FLIR Boson USB Video Class (UVC) camera + Part-of: + +2020-04-26 22:37:12 +0900 Seungha Yang + + * sys/d3d11/gstd3d11device.c: + d3d11device: Add fallback for device creation + D3D11_CREATE_DEVICE_DEBUG flag will be used while creating d3d11 device + to activate debug layer. However, if system doesn't support the + debug layer for some reason, we should try to create d3d11 device + without the flag. Debug layer should be optional for device creation. + Part-of: + +2020-04-28 19:58:53 +0900 Seungha Yang + + * tests/check/elements/mfvideosrc.c: + * tests/check/meson.build: + tests: mfvideosrc: Add unit test + Simple test for reuse scenario + Part-of: + +2020-04-21 20:49:38 +0900 Seungha Yang + + * sys/mediafoundation/gstmfh264enc.cpp: + * sys/mediafoundation/gstmfh265enc.cpp: + mediafoundation: Disable querying supprted maximum resolution + Initializing MFT for checking supported maximum resolution is too + slow. + Part-of: + +2020-01-07 17:12:17 +0900 Seungha Yang + + * sys/mediafoundation/gstmfh265enc.cpp: + * sys/mediafoundation/gstmfh265enc.h: + * sys/mediafoundation/meson.build: + * sys/mediafoundation/plugin.c: + mediafoundation: Add h265 encoder + Add Media Foundation HEVC encoder + Part-of: + +2020-01-07 17:45:22 +0900 Seungha Yang + + * sys/mediafoundation/gstmfh264enc.cpp: + * sys/mediafoundation/gstmfh264enc.h: + * sys/mediafoundation/gstmftransform.cpp: + * sys/mediafoundation/gstmftransform.h: + * sys/mediafoundation/gstmfvideoenc.cpp: + * sys/mediafoundation/gstmfvideoenc.h: + * sys/mediafoundation/gststrmif.h: + * sys/mediafoundation/meson.build: + * sys/mediafoundation/plugin.c: + mediafoundation: Add h264 encoder + Add Media Foundation h264 encoder. If hardware encoders are available + on system, they will have higher rank than software encoder. + Part-of: + +2019-10-07 21:49:26 +0900 Seungha Yang + + * meson_options.txt: + * sys/mediafoundation/gstmfcaptureengine.cpp: + * sys/mediafoundation/gstmfcaptureengine.h: + * sys/mediafoundation/gstmfsourceobject.c: + * sys/mediafoundation/gstmfsourceobject.h: + * sys/mediafoundation/gstmfsourcereader.cpp: + * sys/mediafoundation/gstmfsourcereader.h: + * sys/mediafoundation/gstmfutils.cpp: + * sys/mediafoundation/gstmfutils.h: + * sys/mediafoundation/gstmfvideosrc.c: + * sys/mediafoundation/gstmfvideosrc.h: + * sys/mediafoundation/meson.build: + * sys/mediafoundation/plugin.c: + * sys/meson.build: + mediafoundation: Introduce Microsoft Media Foundation plugin + The Microsoft Media Foundation (MF) is the successor of DirectShow. + This commit includes two kinds of video capture implementation, + one uses IMFSourceReader interface which is available since Windows Vista + and the other is based on IMFCaptureEngine interface which is available + since Windows 8. + Note that this new video source element cannot be used in UWP app + for now, since device activation using those APIs are not allowed by MS. + Part-of: + +2020-04-12 23:52:28 +0800 He Junyan + + * tests/check/libs/h265parser.c: + test: h265parser: Add check for high throughput scc. + Part-of: + +2020-04-12 23:39:07 +0800 He Junyan + + * gst-libs/gst/codecparsers/gsth265parser.c: + * gst-libs/gst/codecparsers/gsth265parser.h: + libs: h265parser: Add High throughput scc extensions profiles' IDC. + It is compitable with scc and we use scc's function to identify it. + Part-of: + +2020-04-12 22:21:01 +0800 He Junyan + + * tests/check/libs/h265parser.c: + test: h265parser: Add more check or h265 extensions. + Part-of: + +2020-04-11 16:39:03 +0800 He Junyan + + * gst-libs/gst/codecparsers/gsth265parser.c: + libs: h265parser: select extension profile by profile idc. + the old manner does not consider the profile idc. The profile idc should + play an more important role in recognizing the profile than the other + information. And there is no need to mix profiles of different extensions + together to find the closest profile when the bits stream is not standard, + different extensions support different features and should not be mixed. + The correct way should be recognize the extension category by profile idc + firstly, and then find the closest profile. + Part-of: + +2020-03-19 23:50:39 +0800 He Junyan + + * gst-libs/gst/codecparsers/gsth265parser.c: + libs: h265parser: rename the FormatRangeExtensionProfile + FormatRangeExtensionProfile declares the common bits used for not + only format range extensions profiles, but also for several different + h265 extension profiles, such as high throughput, screen content + coding extensions, etc. And So the old name is not proper. + We also rename the get_h265_extension_profile function. + Part-of: + +2020-03-20 16:41:16 +0800 He Junyan + + * gst-libs/gst/codecparsers/gsth265parser.c: + libs: h265parser: Fix a bug for getting extension profile. + We should use the traget ExtensionProfile's IDC to check the + profile_compatibility_flag, rather than the profile_idc in the + stream. The old profile_compatibility_flag check always return + true. This causes that profiles with same constraint flags but + different profile_idc can't be recognized correctly. For example, + the screen-extended-main-444 profile is always be recognized as + the high-throughput-444 profile. + Part-of: + +2020-04-24 20:56:17 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264decoder.c: + h264decoder: Perform low-latency outputting only for live pipeline + Frequent outputting might drop throughput-wise performance. + Part-of: + +2020-04-23 19:47:09 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264decoder.c: + h264decoder: Output decoded pictures as soon as possible + In case of IDR, any previously decoded pictures must be drained + before the IDR and POC of IDR should be zero. So we can output + IDR immediately. Also, when POC of current picture is expected to be + the next output POC, decoder can output the picture as well + without waiting. + Part-of: + +2020-04-27 17:02:17 -0400 Nicolas Dufresne + + * sys/d3d11/gstd3d11vp8dec.c: + d3d11vp8dec: Remove unused parameters + Minor cleanup removing unused picture parameters in two internal functions. + Part-of: + +2020-04-28 00:29:52 +0200 Mathieu Duponchelle + + * gst-libs/gst/codecparsers/gsth265parser.h: + gsth265parser.h: escape link-like syntax in doc + +2020-04-27 11:43:57 +0300 Seppo Yli-Olli + + * ext/openh264/gstopenh264plugin.c: + openh264: memcmp return value 0 means match Commit e2aa76db79328b7f61536dd19d0373cf920395ad introduced version check guard for OpenH264 binary. There was a boolean error in memcmp so matching OpenH264 was erroneously rejected. Fixes #1278 + Part-of: + +2020-04-26 13:47:27 +0200 Víctor Manuel Jáquez Leal + + * gst-libs/gst/codecs/gsth264picture.c: + * gst-libs/gst/codecs/gsth265picture.c: + * gst-libs/gst/codecs/gstvp9picture.c: + codecs: fix gir generation + Part-of: + +2020-04-22 14:57:12 +0900 Seungha Yang + + * sys/nvcodec/gstnvh264dec.c: + * sys/nvcodec/gstnvh264dec.h: + * sys/nvcodec/plugin.c: + nvcodec: Add suppport for environment based primary h264 decoder implementation + Introduce GST_USE_NV_STATELESS_CODEC environment to allow user to select + primary nvidia decoder implementation. In case the environment + GST_USE_NV_STATELESS_CODEC=h264 was set, old nvidia h264 decoder element + will not be registered. Instead, both nvh264dec and nvh264sldec + factory name will create gstcodecs based new nvidia h264 decoder element. + Part-of: + +2020-04-16 23:27:31 +0900 Seungha Yang + + * sys/nvcodec/gstnvdec.c: + * sys/nvcodec/gstnvdec.h: + * sys/nvcodec/gstnvdecoder.c: + * sys/nvcodec/gstnvdecoder.h: + * sys/nvcodec/gstnvh264dec.c: + * sys/nvcodec/gstnvh264dec.h: + * sys/nvcodec/meson.build: + * sys/nvcodec/plugin.c: + nvcodec: Add H264 stateless codec implementation + Introduce GstH264Decoder based Nvidia H.264 decoder element. + Similar the element factory name of to v4l2 stateless codec, + this element can be configured with factory name "gstnvh264sldec". + Note that "sl" in the name stands for "stateless" + For now, existing nvh264dec covers more profile and formats + (e.g., interlaced stream) than this implementation. + However, this implementation allows us to control lower level + parameters such as decoded picture buffer management and therefore + we can get a chance to improve performance in terms of latency. + Part-of: + +2020-04-22 16:53:00 +0200 Mathieu Duponchelle + + * ext/closedcaption/gstcccombiner.c: + * ext/closedcaption/gstcccombiner.h: + cccombiner: don't drop buffers on video timestamp discontinuities + If we receive video buffers with non-perfect timestamps, the + caption buffers' timestamps might fall in the interval between + the end of one video buffer and the start of the next one. + Make our criteria for dropping that the caption buffer has + a timestamp older than the end of the previous video buffer, + not older than the start of the new one, unless of course + this is the first video buffer. + Part-of: + +2020-04-22 16:51:08 +0200 Mathieu Duponchelle + + * ext/closedcaption/gstcccombiner.c: + cccombiner: handle gap buffers adequately + - Don't try to map them as actual CC data, that was raising + a critical + - Consume video buffers up to the end of the gap + Part-of: + +2020-04-24 01:56:57 +0900 Seungha Yang + + * sys/v4l2codecs/gstv4l2codech264dec.c: + v4l2slh264dec: Support avc and avc3 formats + h264decoder baseclass provides parsed sps/pps (from codec data) for + subclass. Also, since current implementation is putting start code prefix + manually, the format of stream should not be matter for subclass. + Part-of: + +2020-04-23 12:28:41 +0200 Guillaume Desmottes + + * ext/spandsp/gstspanplc.c: + * ext/spandsp/gstspanplc.h: + spanplc: add 'stats' property + Allow users to retrieve the number of samples, and their duration, + generated using PLC. + Part-of: + +2020-04-21 13:33:54 +0300 Seppo Yli-Olli + + * ext/openh264/gstopenh264plugin.c: + Have strict version check for OpenH264 to avoid ABI issues This fixes #1274 and no longer trusts soname alone + Part-of: + +2020-04-23 23:52:24 +0900 Seungha Yang + + * sys/d3d11/gstd3d11h264dec.c: + * sys/d3d11/gstd3d11h265dec.c: + * sys/d3d11/gstd3d11vp8dec.c: + * sys/d3d11/gstd3d11vp9dec.c: + d3d11decoder: Fix wrong return type from output_picture vfunc + Return type should be GstFlowReturn, not gboolean + Part-of: + +2020-04-23 12:00:15 +0200 Víctor Manuel Jáquez Leal + + * gst-libs/gst/codecs/gsth264decoder.c: + * gst-libs/gst/codecs/gsth265decoder.c: + codecs: set sys frame num before new_picture() + Derive classes might need to operate on the current frame at their + new_picture() vmethod, so it would be needed to set system_frame_number + on picture before calling the vmethod. + Part-of: + +2020-04-22 17:53:39 -0400 Nicolas Dufresne + + * gst/videoparsers/gsth264parse.c: + * gst/videoparsers/gsth265parse.c: + h264/h265parse: Fix handling of very last frame + Baseparse will never call us back on draining, so going into more: label will + cause the current frame to be discarded. So if we have a complete NAL, but not + a complete AU, make sure to terminate the frame properly. + This is a gression introduce by commit e88d8480709581a2e54b7954c47193b729b23c79 and + a194a87b2600a21f1b47b8c89b1c930d5f30de42. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1275 + Part-of: + +2020-02-28 18:14:51 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.c: + * sys/d3d11/gstd3d11decoder.h: + * sys/d3d11/gstd3d11vp8dec.c: + * sys/d3d11/gstd3d11vp8dec.h: + * sys/d3d11/meson.build: + * sys/d3d11/plugin.c: + d3d11decoder: Add VP8 decoder element + New d3d11 VP8 decoder implementation + Part-of: + +2020-04-23 01:02:58 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264picture.c: + * gst-libs/gst/codecs/gsth265picture.c: + * gst-libs/gst/codecs/gstvp9picture.c: + codecs: Fix some documentation + Add missing "transfer full" annotation, etc + Part-of: + +2020-03-29 22:23:23 +0900 Seungha Yang + + * gst-libs/gst/codecs/gstvp8decoder.c: + * gst-libs/gst/codecs/gstvp8decoder.h: + * gst-libs/gst/codecs/gstvp8picture.c: + * gst-libs/gst/codecs/gstvp8picture.h: + * gst-libs/gst/codecs/meson.build: + codecs: Add new baseclass for VP8 decoder + This implemenation is similar to VP9 but much simpler than it. + Part-of: + +2020-03-29 23:31:13 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.c: + * sys/d3d11/gstd3d11decoder.h: + * sys/d3d11/gstd3d11h264dec.c: + * sys/d3d11/gstd3d11h265dec.c: + * sys/d3d11/gstd3d11vp9dec.c: + d3d11decoder: Add helper methods for negotiation and decide_allocation + The implementation for all codecs is almost the same. + No need to duplicate code. + Part-of: + +2020-03-29 22:36:59 +0900 Seungha Yang + + * gst-libs/gst/codecs/gstvp9decoder.h: + vp9decoder: Fix small typo + Part-of: + +2020-03-29 22:35:06 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264decoder.h: + * gst-libs/gst/codecs/gsth265decoder.h: + * gst-libs/gst/codecs/gstvp9decoder.h: + codecs: Reorganize the order of vfunc + ... to the order in which it is actually called + Part-of: + +2020-04-11 03:11:35 +0900 Seungha Yang + + * sys/kms/gstkmsallocator.c: + * sys/kms/gstkmsutils.c: + * sys/kms/meson.build: + kmssink: Add support for P010 and P016 formats + Support high bit-depth YUV formats + Part-of: + +2020-04-21 15:30:03 +0900 Seungha Yang + + * sys/d3d11/gstd3d11window.cpp: + d3d11window: Fix videoprocessor leak + Clear all objects in dispose function + +2020-04-21 15:27:56 +0900 Seungha Yang + + * sys/d3d11/gstd3d11device.c: + d3d11device: Drop floating reference count + ... and use gst_object_unref instead of g_object_unref for tracer + to be happy. + +2020-04-20 22:48:43 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264decoder.c: + h264decoder: Don't handle gap frame num for the first picture + If the first picture is not IDR, it would have non-zero frame_num + but it's not gap. We should skip gap frame handling in that case + +2020-04-20 16:00:30 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264decoder.c: + * gst-libs/gst/codecs/gsth264picture.c: + h264decoder: Add some debug messages + +2020-04-16 22:15:37 +0200 Víctor Manuel Jáquez Leal + + * sys/v4l2codecs/gstv4l2codecallocator.c: + v4l2codecs: allocator: use gst_clear_object + So tracer can do its job. + +2020-04-19 19:18:14 +0300 Sebastian Dröge + + * tests/check/elements/mpegtsmux.c: + tsmux: Don't assert sinkpad reference counts in test + We can't be sure about the reference count if the muxer is currently + running, which can happen in the test_reappearing_pad test. An + additional reference might temporarily be owned by the srcpad task of + tsmux while iterating over the pads. + +2020-04-19 18:37:58 +0200 Víctor Manuel Jáquez Leal + + * gst-libs/gst/codecs/gsth264decoder.c: + * gst-libs/gst/codecs/gsth264picture.h: + codecs: h264picture: typo in GstH264PictureField enum + +2020-04-16 16:17:56 +0000 Guillaume Desmottes + + * gst/transcode/gsttranscodebin.c: + transcodebin: fix caps NULL unref + gst_pad_get_current_caps() can return a NULL pointer which was raisin a CRITICAL. + +2020-04-16 15:35:44 +0200 Stéphane Cerveau + + * sys/kms/gstkmssink.c: + kmssink: fix memory leak on failing allowed caps + When drm does not find any format, the allowed_caps is + empty one and need to be unref by the caller. + Fix #1268 + +2020-04-14 17:10:34 -0400 Nicolas Dufresne + + * sys/kms/gstkmssink.c: + kmssink: Save last metadata at the same time as the last buffer + The render width/height and the vinfo was only saved upon renegotiation. This + fixes the problem by saving this metadata at the same time the buffer is + saved. The saved copy of this is needed for expose() and drain() virtual functions. + This fixes various assertion that happens on drain query. + +2020-03-31 12:42:26 -0400 George Kiagiadakis + + * tests/check/elements/h265parse.c: + tests: h265parse: Add unit test for conversion and sliced data + testing only byte-stream for now + +2019-03-28 17:23:30 +0200 George Kiagiadakis + + * tests/check/elements/h264parse.c: + tests: h264parse: unit tests for sliced data processing + +2019-09-20 15:21:17 -0400 Xavier Claessens + + * gst/videoparsers/gsth264parse.c: + h264parse: Remove unused arguments + +2019-06-12 22:19:04 -0400 Nicolas Dufresne + + * gst/videoparsers/gsth264parse.c: + h264parse: Don't push NALs before we have HEADERS + Otherwise we may endup pushing incomplete caps, which cause a renegotiation. + Note that this has the effect that caps are no longer pushed twice in presence + of valid framerate in the headers. + +2018-10-10 15:27:30 +0000 Nicolas Dufresne + + * gst/videoparsers/gsth265parse.c: + h265parse: Don't push NALs before we have HEADERS + Otherwise we may endup pushing incomplete caps. Note that this has the side + effect that caps are no longer pushed twice in presence of VUI with valid + framerate. + +2018-10-09 16:42:58 -0400 Nicolas Dufresne + + * gst/videoparsers/gsth265parse.c: + h265parse: Differentiate PREFIX SEI from SUFFIX + There is some code to fixup broken stream that uses the SEI location, + this code is meant to locate SUFFIX SEI only. This should prevent + unwanted side effect if SUFFIX SEI is used. + +2018-10-03 16:43:14 -0400 Nicolas Dufresne + + * gst/videoparsers/gsth265parse.c: + h265parse: Don't add latency when not needed + We no longer add latency when doing AU->AU, AU->NAL and NAL->NAL + parsing. + +2018-10-03 16:35:39 -0400 Nicolas Dufresne + + * gst/videoparsers/gsth265parse.c: + * gst/videoparsers/gsth265parse.h: + h265parse: Propagate MARKER flag + +2018-10-09 16:01:08 -0400 Nicolas Dufresne + + * gst/videoparsers/gsth265parse.c: + * gst/videoparsers/gsth265parse.h: + h265parse: Don't wait for next NAL if input is aligned + Waiting for the next NAL increases the latency. If alignment=nal/au + has been negotiated, assumes the the buffer contains a complete + NAL and don't expect a second start-code. This way, nal -> nal, + au -> au and au -> nal no longer introduce latency. + As a side effect, the collect_pad() function was not able to poke at the + following NAL. This call is now moved before processing the NAL, so + it's looking at the current NAL before it's ingested into the parser + state in order to dermin if the end of an AU has been reached. The AUD + injection state as been adapted to support this. + This change will break pipelines if alignment=nal is used without respecting the + alignment. Effectively, the parser will no longer fix the broken aligment + which will result in parser error and the termination of the pipeline. Such + issue existed in tsdemux element and might exist in any forks of that code. + Related to https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1193 + +2018-10-03 15:53:23 -0400 Nicolas Dufresne + + * gst/videoparsers/gsth265parse.c: + h265parse: Set PTS/DTS and DISCONT on crafted NAL + When we inject a NAL in the bitstream before another one, make + sure to pass both DTS and PTS. Also make sure to transfer the + DISCONT flag properly. + +2018-09-27 22:10:14 -0400 Nicolas Dufresne + + * gst/videoparsers/gsth264parse.c: + h264parse: Don't add latency when not needed + We no longer add latency when doing AU->AU, AU->NAL and NAL->NAL + parsing. + +2018-09-28 16:49:52 -0400 Nicolas Dufresne + + * gst/videoparsers/gsth264parse.c: + * gst/videoparsers/gsth264parse.h: + h264parse: Propagate MARKER flag + +2018-09-25 16:10:13 -0400 Nicolas Dufresne + + * gst/videoparsers/gsth264parse.c: + h264parse: Don't wait for next NAL if input is aligned + Waiting for the next NAL increases the latency. If alignment=nal/au + has been negotiated, assumes that the buffer contains a complete + NAL and don't expect a second start-code. This way, nal -> nal, + au -> au and au -> nal no longer introduce latency. + As a side effect, the collect_pad() function was not able to poke at the + following NAL. This call is now moved before processing the NAL, so + it's looking at the current NAL before it's ingested into the parser + state in order to dermin if the end of an AU has been reached. The AUD + injection state as been adapted to support this. + This change will break pipelines if alignment=nal is used without respecting the + alignment. Effectively, the parser will no longer fix the broken aligment + which will result in parser error and the termination of the pipeline. Such + issue existed in tsdemux element and might exist in any forks of that code. + Related to https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1193 + +2018-09-25 16:16:42 -0400 Nicolas Dufresne + + * gst/videoparsers/gsth264parse.c: + h264parse: Set PTS/DTS and DISCONT on crafted NAL + When we inject a NAL in the bitstream before another one, make + sure to pass both DTS and PTS. Also make sure to transfer the + DISCONT flag properly. + +2018-09-25 16:11:03 -0400 Nicolas Dufresne + + * gst/videoparsers/gsth264parse.c: + h264parse: Remove no-op assignment + upstream was set to *out_ts, setting *out_ts to upstream here will + have no effect. + +2020-04-13 18:18:45 +0300 Sebastian Dröge + + * gst/mpegtsmux/gstbasetsmux.c: + mpegtsmux: Chain up pad dispose function to the one of the parent class + Otherwise we will leak various memory. + +2020-04-13 18:04:19 +0300 Sebastian Dröge + + * gst/mpegtsmux/gstbasetsmux.c: + mpegtsmux: Properly release requests pads by chaining up to aggregators function + +2020-04-10 19:54:31 +0300 Vivia Nikolaidou + + * gst/mpegtsmux/gstbasetsmux.c: + * gst/mpegtsmux/tsmux/tsmux.c: + * gst/mpegtsmux/tsmux/tsmux.h: + * gst/mpegtsmux/tsmux/tsmuxstream.c: + * gst/mpegtsmux/tsmux/tsmuxstream.h: + * tests/check/elements/mpegtsmux.c: + tsmux: Ability for streams to disappear and reappear + Until now, any streams in tsmux had to be present when the element + started its first buffer. Now they can appear at any point during the + stream, or even disappear and reappear later using the same PID. + +2020-03-18 17:58:52 +0100 Jan Alexander Steffens (heftig) + + * ext/srt/gstsrtobject.c: + * ext/srt/gstsrtobject.h: + srt: Accumulate total bytes sent/received over all connections/callers + So we don't lose them. Split gst_srt_object_open_internal for internal + reconnections that don't reset the accumulated bytes. + +2020-03-23 16:38:58 +0100 Jan Alexander Steffens (heftig) + + * ext/srt/gstsrtobject.c: + srt: Fix type of bytes-received-lost + The field is a uint64_t. + +2020-03-18 18:06:59 +0100 Jan Alexander Steffens (heftig) + + * ext/srt/gstsrtobject.c: + * ext/srt/gstsrtobject.h: + * ext/srt/gstsrtsink.c: + * ext/srt/gstsrtsrc.c: + srt: Remove use of closures for signal emission + It seems overly complicated. + +2020-03-18 17:55:38 +0100 Jan Alexander Steffens (heftig) + + * ext/srt/gstsrtobject.c: + * ext/srt/gstsrtobject.h: + * ext/srt/gstsrtsink.c: + * ext/srt/gstsrtsrc.c: + srt: Clean up locking + Use GST_OBJECT_LOCK (srtobject->element) to protect only the fields + involved in property access. + Introduce a new mutex srtobject->sock_lock to go with + srtobject->sock_cond and protect the list of callers from concurrent + access. + +2020-03-18 17:54:29 +0100 Jan Alexander Steffens (heftig) + + * ext/srt/gstsrtobject.c: + * ext/srt/gstsrtobject.h: + * ext/srt/gstsrtsink.c: + * ext/srt/gstsrtsink.h: + * ext/srt/gstsrtsrc.c: + * ext/srt/gstsrtsrc.h: + srt: Remove trailing whitespace + +2018-10-10 18:36:57 +0000 Nicolas Dufresne + + * gst/mpegtsdemux/tsdemux.c: + mpegtsdemux: Don't pretend doing NAL alignment + Per specification in 2.14.2 "For PES packetization, no specific data + alignment constraints apply". So we should not advertise NAL + alignment. + This bug was introduced at the same moment the alignment field was introduced + 10 years ago. The plan was that alignment=none (or no alignment field) was to + be used for mpegtsdemux, but no one noticed the error. The reason is that at + the same moment, everything dealing with H264 started defaulting to AU + alignment. + https://bugzilla.gnome.org/show_bug.cgi?id=606662#c22 + This patch will have a side effect that a parser is now needed after the + tsdemux element. The following pipeline will not negotiate anymore as the + mpegtsmux element requires alignment={nal,au}. + ... ! tsdemux ! mpegtsmux ! ... + As a side effect, anyone that forked from tsdemux should updated their code to + fix this bug. + +2020-04-13 20:36:50 +0900 Seungha Yang + + * gst/videoparsers/gsth264parse.c: + h264parse: Remove useless comparison + sei_pic_struct is unsigned and GST_H264_SEI_PIC_STRUCT_FRAME is zero. + CID: 1461467 + +2020-04-13 20:31:14 +0900 Seungha Yang + + * gst-libs/gst/codecparsers/gsth265parser.c: + h265parser: Fix some coverity issues + - Remove useless comparison + - Fix invalid memory access + CID: 1461477, 1461476, 1461475, 1461474, 1461279 + +2020-04-03 15:45:02 +0100 Philippe Normand + + * ext/wpe/WPEThreadedView.cpp: + * ext/wpe/WPEThreadedView.h: + wpe: Add support for SHM without requiring EGLDisplay + The previous version of the SHM export support still required a valid + EGLDisplay. The upcoming WPEBackend-FDO 1.8.x aims to remove this requirement, + hence allowing wpesrc to be used without GPU. + +2020-04-13 15:21:48 +0900 J. Kim + + * ext/srt/gstsrtobject.c: + srtobject: fix mutex lock target + GstSRTObject is a structure that has an actual GstElement + which is extended to srt{src,sink}. + +2020-04-10 21:03:04 +0200 Víctor Manuel Jáquez Leal + + * sys/v4l2codecs/gstv4l2codecdevice.c: + * sys/v4l2codecs/gstv4l2codecdevice.h: + v4l2codecs: fix v4l2codecdevice get type + Currently the GType of v4l2codecdevice is hardcoded to zero, but it + rather should be delivered by the GType system. + +2020-04-10 18:22:21 +0300 Jordan Petridis + + * sys/msdk/gstmsdkdec.c: + gstmsdkdec: fix logical operation that misses parenthesis + in C, & is weaker than the ! operator and clang is giving the following + error about it. + ``` + ../subprojects/gst-plugins-bad/sys/msdk/gstmsdkdec.c:731:7: error: logical not is only applied to the left hand side of this bitwise operator [-Werror,-Wlogical-not-parentheses] + if (!gst_msdk_context_get_job_type (thiz->context) & GST_MSDK_JOB_DECODER) { + ^ ~ + ../subprojects/gst-plugins-bad/sys/msdk/gstmsdkdec.c:731:7: note: add parentheses after the '!' to evaluate the bitwise operator first + if (!gst_msdk_context_get_job_type (thiz->context) & GST_MSDK_JOB_DECODER) { + ^ + ( ) + ../subprojects/gst-plugins-bad/sys/msdk/gstmsdkdec.c:731:7: note: add parentheses around left hand side expression to silence this warning + if (!gst_msdk_context_get_job_type (thiz->context) & GST_MSDK_JOB_DECODER) { + ^ + ( ) + 1 error generated. + ``` + +2020-03-23 14:40:52 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264decoder.c: + * gst-libs/gst/codecs/gsth265decoder.c: + * gst-libs/gst/codecs/gstvp9decoder.c: + codecs: Add minimal state validation + ... to prevent requesting decoding before the preparation. + For instance, baseclass should not request decoding a picture if there + is no parsed valid headers, since subclass is most likely + not ready to decoding it. + +2020-03-30 15:42:35 +0900 Seungha Yang + + * gst-libs/gst/codecparsers/gsth265parser.c: + * gst-libs/gst/codecparsers/gsth265parser.h: + h265parser: Add APIs to allow update VPS/SPS/PPS + gst_h265_parser_parse_{vps,sps,pps} APIs were used to parse VPS/SPS/PPS and + also in order to update parser's internal state at once. Meanwhile + gst_h265_parse_{vps,sps,pps} APIs are to parse VPS/SPS/PPS without state update. + This commit introduces new APIs so that only accepted VPS/SPS/PPS by user + can be updated to be used by parser. + +2020-03-30 15:27:40 +0900 Seungha Yang + + * gst-libs/gst/codecparsers/gsth264parser.c: + * gst-libs/gst/codecparsers/gsth264parser.h: + h264parser: Add APIs to allow update SPS/PPS + gst_h264_parser_parse_{sps,pps} APIs were used to parse SPS/PPS and + also in order to update parser's internal state at once. Meanwhile + gst_h264_parse_{sps,pps} APIs are to parse SPS/PPS without state update. + This commit introduces new APIs so that only accepted SPS/PPS by user + can be updated to be used by parser. + +2020-04-09 23:12:25 +0900 Seungha Yang + + * sys/kms/meson.build: + meson: kmssink: Allow fallback only on linux + Otherwise fallback will waste meson configure time on non-linux + +2020-04-08 01:22:07 +0200 Zeid Bekli + + * ext/srtp/gstsrtp.c: + srtp: Added support for BYE packet + SRTCP can't get SSRC from BYE packet, this will make srtpdec element + to drop the package. Adding support to get the SSRC from BYE packets. + +2020-04-09 16:12:58 +0900 Seungha Yang + + * sys/nvcodec/gstcuvidloader.c: + * sys/nvcodec/gstcuvidloader.h: + * sys/nvcodec/gstnvdec.c: + * sys/nvcodec/gstnvenc.c: + * sys/nvcodec/gstnvenc.h: + * sys/nvcodec/plugin.c: + nvdec: Don't hardcode DPB size + Too many decode surface would waste GPU memory. Also it seems to be + introducing additional latency depending on stream. Since nvcodec + sdk version 9.0, CUVID parser API has been providing the minimum + required number of surface. By using it, we can save GPU memory + and reduce possible latency. + +2020-04-08 14:21:30 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codecdevice.c: + v4l2codecs: Fix FD leak during device enumeration + This was revealed by Coverity. + CID 1461248 + +2020-04-07 19:28:27 +0200 Stéphane Cerveau + + * ext/dash/gstmpdclient.c: + dash: fix VARARGS coverity error + va_end was not called in every code path due to + g_return_val_if_fail. + API usage errors (VARARGS) + va_end was not called for "myargs". + CID: 1461294 + +2020-04-08 12:10:21 -0400 Xavier Claessens + + * meson.build: + * meson_options.txt: + Meson: Change extra-checks to feature option and make it yielding + +2020-04-08 14:00:48 -0400 Nicolas Dufresne + + * gst/videoparsers/gsth264parse.c: + h264parse: Fix content light level value changes + Same as for H265, was found by Coverity. + +2020-04-07 17:04:30 -0400 Nicolas Dufresne + + * gst/videoparsers/gsth265parse.c: + h265parse: Fix content light level value changes + The comparision was not testing anything meaninful. This fixes the comparision + so we now update the caps whenever the value differ. This was detected by + coverity. + CID 1461291 + +2020-04-08 18:39:06 +0200 Jan Alexander Steffens (heftig) + + * gst/rtmp2/gstrtmp2sink.c: + * gst/rtmp2/gstrtmp2src.c: + rtmp2: Avoid a deadlock when getting stats + We need to do this without holding the lock as the `g_async_queue_pop` + waits on the loop thread to deliver the stats. The loop thread might + attempt to take the lock as well, leading to a deadlock. + Taking a reference to the connection should be enough to keep this + safe. + +2020-04-08 15:37:03 +0900 Seungha Yang + + * gst/videoparsers/gsth264parse.c: + * gst/videoparsers/gsth264parse.h: + h264parse: Add support for inband timecode update + Add new property "update-timecode" to allow updating timecode + in picture timing SEI depending on timecode meta. Since the picture + timing SEI message requires proper VUI setting but we don't support + re-writing SPS, this might not work for some streams + +2020-04-08 17:07:36 +0900 Seungha Yang + + * gst/videoparsers/gsth264parse.c: + h264parse: Don't unconditionally append timecode meta + If upstream buffer has its own timecode metatdata, don't append + new timecode meta into the buffer. + +2020-04-08 16:24:06 +0900 Seungha Yang + + * gst-libs/gst/codecparsers/gsth264parser.c: + * gst-libs/gst/codecparsers/gsth264parser.h: + * gst/videoparsers/gsth264parse.c: + h264parser: Parse all SEI payload type even if it's not handled by parser + ... so that user can handle it from outside of parser API + +2020-04-07 20:26:23 +0900 Seungha Yang + + * gst-libs/gst/codecparsers/gsth264parser.c: + * tests/check/libs/h264parser.c: + h264parser: Add support for creating picture timing SEI + This new method can make it possible to inject timecode meta into + h264 bitstream + +2020-04-07 22:30:55 +0900 Seungha Yang + + * tests/check/libs/h264parser.c: + tests: h264parser: Fix picture timing SEI + The payloadSize don't need to include rbsp_trailing_bits() + +2020-04-07 19:32:29 +0900 Seungha Yang + + * gst-libs/gst/codecparsers/gsth264parser.c: + * gst-libs/gst/codecparsers/gsth264parser.h: + h264parser: Make GstH264PicTiming self-containing all the syntax information + ... and store all parsed values. + We are storing pic_struct_present_flag although it's not part of + this SEI message but GstH264PicTiming includes it to clarify + following syntax values. + In addition to that, by adding CpbDpbDelaysPresentFlag, we don't need to + refer to VUI anymore. + +2020-04-07 21:17:30 +0900 Seungha Yang + + * gst-libs/gst/codecparsers/gsth264parser.c: + h264parser: Fix some misleading debug messages + +2020-04-07 09:17:15 +0900 Seungha Yang + + * gst-libs/gst/codecparsers/gsth264parser.h: + h264parser: Fix mismatched argument of declaration and definition + +2020-04-06 10:25:37 +0200 Michael Olbrich + + * gst/sdp/gstsdpdemux.c: + * gst/sdp/gstsdpdemux.h: + sdpdemux: don't send EOS for unknown SSRC + The rtpbin sends signals for all SSRCs. Don't send an EOS when the SSRC + does not match the stream SSRC. + This avoids problems when an SSRC from another receiver times out. + +2020-04-08 08:47:37 -0400 Thibault Saunier + + * docs/libs/codecs/index.md: + * docs/libs/codecs/sitemap.txt: + * docs/meson.build: + * gst-libs/gst/codecs/gsth264decoder.c: + * gst-libs/gst/codecs/gsth265decoder.c: + * gst-libs/gst/codecs/gstvp9decoder.c: + * gst-libs/gst/codecs/meson.build: + codecs: Add basic documentation stubs + +2020-04-07 17:10:08 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2decoder.c: + v4l2decoder: Fix file descriptor leak + A copy paste error was leading to file descriptor leak. This was detected by + Coverity. + CID 1461285 + +2020-04-06 16:40:38 +0100 Philippe Normand + + * gst/debugutils/gstfakevideosink.c: + * gst/debugutils/gstfakevideosink.h: + fakevideosink: Allow allocation meta flags fine-tuning + In some scenarios the fakevideosink shouldn't advertize the overlay-composition + meta for instance, so that overlay elements perform subtitles blending + themselves. + +2020-04-06 10:19:23 +0200 Michael Olbrich + + * gst/mpegtsdemux/mpegtspacketizer.c: + mpegtspacketizer: be more tolerant when parsing the adaptation field + According to the specification, the adaptation field length must be 183 if + there is no payload data and < 183 if the packet contains an adaptation + field and payload data. + Unfortunately some payloaders always set the flag for payload data, even if + the adaptation field length is 183. + Don't return with an error in this case. Clear the payload data flag + instead and parse the adaptation field as usual. This avoids visual + artefacts for such streams. + +2020-04-06 15:06:01 -0400 Nicolas Dufresne + + * gst-libs/gst/codecs/gsth264decoder.c: + * gst-libs/gst/codecs/gsth264picture.h: + codecs: h264: Fix DPB size calculation + As per specification in A.3.1 h) and A.3.2 f), the maximum size of the DPB is + 16. Fix the maximum in the fine and fix the formula to use MIN instead of MAX + so that we no longer always use the maximum for the profile/level. + +2020-04-01 12:33:38 +0800 Haihao Xiang + + * sys/msdk/gstmsdkvp9dec.c: + msdkvp9dec: add support for VP9 12bit + The output formats are P012_LE for 12bit 420 and Y412_LE for 12bit 444. + +2020-04-03 18:50:16 -0400 worldofpeace + + * ext/neon/meson.build: + meson: build with neon 0.31 + No API/ABI changes https://github.com/notroj/neon/blob/0.31.0/NEWS#L3 + +2020-04-03 17:07:47 +0530 Nirbheek Chauhan + + * ext/vulkan/shaders/meson.build: + * meson.build: + * sys/d3d11/meson.build: + meson: Don't use get_option('buildtype') + We should directly check the values of the `debug` and `optimization` + options instead. + `get_option('buildtype')` will return `'custom'` for most combinations + of `-Doptimization` and `-Ddebug`, but those two will always be set + correctly if only `-Dbuildtype` is set. So we should look at those + options directly. + For the two-way mapping between `buildtype` and `optimization` + + `debug`, see this table: + https://mesonbuild.com/Builtin-options.html#build-type-options + +2020-03-23 12:56:46 +0100 Stéphane Cerveau + + * sys/kms/meson.build: + kms: add fallback on libdrm project if available. + +2020-03-12 13:28:59 +0800 Haihao Xiang + + * sys/msdk/gstmsdkh265dec.c: + msdkh265dec: add support for main-444-12, main-444-12-intra profiles + The video format is Y412_LE + +2020-03-12 13:21:02 +0800 Haihao Xiang + + * sys/msdk/gstmsdkallocator_libva.c: + msdk: map Y412_LE to VA_FOURCC_Y416 + In media driver, VA_FOURCC_Y416 is used for packed 12 bits 4:4:4:4 YUV + format, the corresponding RT format is VA_RT_FORMAT_YUV442_12 + +2020-03-12 13:12:33 +0800 Haihao Xiang + + * sys/msdk/gstmsdkallocator_libva.c: + * sys/msdk/msdk_libva.c: + msdk: map MFX_FOURCC_Y416 to VA_FOURCC_Y416 + Y416 is used for packed 12 bits 4:4:4:4 YUV format in media driver, the + RT format is VA_RT_FORMAT_YUV444_12 + +2020-03-12 12:58:40 +0800 Haihao Xiang + + * sys/msdk/gstmsdksystemmemory.c: + * sys/msdk/gstmsdkvideomemory.c: + * sys/msdk/msdk.c: + msdk: map Y412_LE to MFX_FOURCC_Y416 + MFX_FOURCC_Y416 is used for packed 12 bits 4:4:4:4 YUV format in + MediaSDK + +2020-03-11 14:55:33 +0800 Haihao Xiang + + * sys/msdk/gstmsdkh265dec.c: + msdkh265dec: add support for main-422-12, main-422-12-intra profiles + The video format is Y212_LE + +2020-03-11 14:35:55 +0800 Haihao Xiang + + * sys/msdk/gstmsdkallocator_libva.c: + msdk: map Y212_LE to VA_FOURCC_Y216 + In media driver, VA_FOURCC_Y216 is used for packed 12 bits 4:2:2 YUV + format, the corresponding RT format is VA_RT_FORMAT_YUV422_12 + +2020-03-11 14:09:11 +0800 Haihao Xiang + + * sys/msdk/gstmsdkallocator_libva.c: + * sys/msdk/msdk_libva.c: + msdk: map MFX_FOURCC_Y216 to VA_FOURCC_Y216 + In media driver, Y216 is used for packed 12 bits 4:2:2 format YUV + format, so the RT format is VA_RT_FORMAT_YUV422_12. + +2020-03-11 13:54:42 +0800 Haihao Xiang + + * sys/msdk/gstmsdksystemmemory.c: + * sys/msdk/msdk.c: + msdk: map Y212_LE to MFX_FOURCC_Y216 + MFX_FOURCC_Y216 is used for packed 12 bits 422 YUV format in MediaSDK + +2020-04-03 00:42:23 +0900 Seungha Yang + + * sys/msdk/gstmsdkh265enc.c: + msdkh265enc: Fix for wrong parser free function + +2020-03-18 12:30:51 +1100 Jan Schmidt + + * gst-libs/gst/adaptivedemux/gstadaptivedemux.c: + adaptivedemux: Handle instant rate change requests directly + Downstream demuxers will first send seek events upstream to us. + Do the right thing with instant rate change requests by handling them + immediately. + +2020-03-17 19:31:22 +1100 Jan Schmidt + + * gst-libs/gst/adaptivedemux/gstadaptivedemux.c: + adaptivedemux: Don't ignore gst_segment_do_seek() return result + gst_segment_do_seek() can fail, so don't ignore the return result + +2018-11-30 05:18:42 +1100 Jan Schmidt + + * gst/mpegtsdemux/mpegtsbase.c: + tsdemux: Send instant-rate-change event if requested in the SEEK event + Convert instant-rate-change seek events into a downstream + instant-rate-change event and skip any further local seek handling. + +2020-03-31 20:51:15 +0900 Seungha Yang + + * sys/msdk/gstmsdkh264enc.c: + * sys/msdk/gstmsdkh264enc.h: + msdkh264enc: Configure parser and SEI array only if it's required + +2020-03-31 15:25:47 +0900 Seungha Yang + + * sys/msdk/gstmsdkh265enc.c: + * sys/msdk/gstmsdkh265enc.h: + msdkh265enc: Add support for CEA708 closed caption insertion + Functionally identical to that of msdkh264enc + +2020-03-19 18:25:18 +0900 Seungha Yang + + * gst-libs/gst/codecparsers/gsth265parser.c: + * gst-libs/gst/codecparsers/gsth265parser.h: + * tests/check/libs/h265parser.c: + h265parser: Add a helper method to create SEI nal unit + Add an API to create raw SEI nal unit. This would be useful in case + an user want to create SEI nal data and inject the SEI nal data + into bitstream. + +2020-04-01 19:43:51 +0200 Miguel Paris + + * ext/srtp/gstsrtpdec.c: + srtpdec: reduce log level for replay cases + These are normal cases, so DEBUG level is enough. + +2017-04-11 12:41:11 +0200 Miguel París Díaz + + * ext/srtp/gstsrtp.h: + * ext/srtp/gstsrtpdec.c: + srtpdec: do not warning old replay errors + Reordered packets producing decrypting errors are very normal, + so we should filter which errors are warning and which not. + +2018-05-29 15:00:43 +0200 Miguel Paris + + * ext/srtp/gstsrtpdec.c: + * ext/srtp/gstsrtpdec.h: + srtpdec: fix reseting RTP sequence number on ROC changes + Each srtp_stream_t is tied to an specific SSRC, so a + roc_changed flag should be kept per each SSRC in order to + properly reset RTP sequence number on ROC changes. + +2020-03-13 16:50:16 +0900 Seungha Yang + + * sys/d3d11/gstd3d11format.c: + d3d11: Update for video-hdr struct change + See the change of -base https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/594 + +2020-03-13 16:45:12 +0900 Seungha Yang + + * sys/nvcodec/gstnvh265enc.c: + nvh265enc: Update for video-hdr struct change + See the change of -base https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/594 + +2020-03-13 16:34:01 +0900 Seungha Yang + + * ext/x265/gstx265enc.c: + x265enc: Update for video-hdr struct change + See the change of -base https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/594 + +2020-03-13 16:17:07 +0900 Seungha Yang + + * gst/videoparsers/gsth264parse.c: + * gst/videoparsers/gsth265parse.c: + * tests/check/elements/h264parse.c: + * tests/check/elements/h265parse.c: + h264parse,h265parse: Update for video-hdr struct change + See the change of -base https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/594 + +2018-07-28 14:54:42 +0200 Zeeshan Ali + + * gst/videoparsers/gsth265parse.c: + h265parse: Set duration on buffers base on framerate + +2018-06-14 16:20:54 +0200 Zeeshan Ali + + * gst/videoparsers/gsth265parse.c: + h265parse: Derive src fps from vui_time_scale & vui_num_units_in_tick + +2018-06-13 16:33:21 +0200 Zeeshan Ali + + * gst/videoparsers/gsth265parse.c: + h265parse: Handle interlaced video + For interlaced video: + * set the interlace mode in the src caps + * double the height from SPS in the caps. + * set field latency, instead of frame latency. + Fix #778 + +2020-03-27 13:05:41 -0400 Nicolas Dufresne + + * gst-libs/gst/codecs/gsth264picture.c: + codecs: h264dpb: Don't leak pic_list GArray + The contents was cleared, but the array was never released. + +2020-03-26 15:57:17 -0400 Nicolas Dufresne + + * sys/v4l2codecs/meson.build: + v4l2codecs: Only build this plugin on Linux + This is not useful on any other OSs, it will also avoid potential build + failure as this code uses Linux specific calls. + +2020-03-26 15:38:47 -0400 Nicolas Dufresne + + * sys/v4l2codecs/plugin.c: + v4l2codecs: Add plugin dependency + This ensure that the registry cache get updated when a meaningful change is + made in /dev for files named media*. + +2020-03-20 12:37:41 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codech264dec.c: + * sys/v4l2codecs/gstv4l2codecpool.c: + * sys/v4l2codecs/gstv4l2decoder.c: + v4l2codecs: Wait for buffers to come back + This code add required mechanism to try and allocate (not implemented yet) + otherwise wait for more buffers. This also comes with mechanism to terminate + the wait on flush or PAUSED_TO_READY transitions. + +2020-03-20 14:14:46 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codech264dec.c: + * sys/v4l2codecs/gstv4l2decoder.c: + * sys/v4l2codecs/gstv4l2decoder.h: + v4l2codecs: Implement flushing sequence + This simply consit of cycling through STREAMOFF/STREAMON with stateless + decoders. + +2020-03-20 12:35:03 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codecallocator.c: + * sys/v4l2codecs/gstv4l2codecallocator.h: + v4l2codecs: allocator: Add method to wait for more buffers + This add function to wait for buffers to get back into the pool along with a + set_flushing() method to allow unblocking this wait. + +2020-03-18 17:03:51 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codecpool.c: + v4l2codecs: pool: Create new buffer when pool is empty + This simply create an empty GstBuffer when the pool is empty. This way it's up + to the allocator to grow or wait if we ran out of memory. + +2020-03-18 17:00:37 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codech264dec.c: + v4l2slh264dec: Improve end_picture() robustness + Use a goto to ensure that for all cases we cleanup the current picture state. + And move the src buffer allocation higher, so we don't queue a bitstream + buffer if we don't have a picture buffer to decode into. + +2020-03-18 16:51:11 -0400 Nicolas Dufresne + + * gst-libs/gst/codecs/gsth264decoder.c: + codecs: h264: Do not ignore end_picture() return value + If decoding failed because end_picture() failed, set the picture to + nonexisting, this way output_picture() will be skipped. This avoids confusing + special cases in output_picture() implementation. + +2020-02-17 18:08:48 -0500 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codech264dec.c: + * sys/v4l2codecs/gstv4l2decoder.c: + * sys/v4l2codecs/gstv4l2decoder.h: + * sys/v4l2codecs/gstv4l2format.c: + v4l2slh264dec: Add output format negotiation + This allow negotiating the output format through caps. Some drivers can + pipeline the decoder buffer through an image processor. This only support + colorspace conversion for now. + +2020-03-13 16:51:27 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2format.c: + * sys/v4l2codecs/gstv4l2format.h: + v4l2format: Convert between V4L2 and GST video format + This will be needed in the output format negotiation. + +2020-03-13 14:23:39 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2format.c: + v4l2codecs: Read driver provided stride + This implements driver stride support but only for single allocation buffers. + This code is imported from the original v4l2 plugin and adapted to the new + helper context. + +2020-03-12 16:15:40 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codech264dec.c: + v4l2h264dec: Copy frames when GstVideoMeta is not supported + In some case, when downstream does not support GstVideoMeta, we need to + normalize the stride and offset of the buffer so that downstream can render + properly with a GstVideoMeta. This code is not called when GstVideoMeta is + supported downstream. + +2020-03-11 17:45:17 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codecpool.c: + * sys/v4l2codecs/gstv4l2codecpool.h: + v4l2codec: Add initial GstVideoMeta support + In this patch we strictly set the GstVideoMeta width/height to the coded width + and height. Further patches will add stride support and frame copying when + downstream does not support GstVideoMeta. + +2020-03-09 16:44:19 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codech264dec.c: + v4l2slh264dec: Prevent spurious renegotiation + Don't let downstream cause a renegotiation at random point in time. This would + lead to spurious renegotiation and the decoder state may not be recoverable. + +2020-03-03 21:22:52 -0500 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codech264dec.c: + v4l2slh264dec: Hold on picture buffers + These buffers should not be reused for decoding until they are no longer + referenced. + +2020-02-16 17:48:12 -0500 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codech264dec.c: + * sys/v4l2codecs/gstv4l2decoder.c: + * sys/v4l2codecs/gstv4l2decoder.h: + v4l2codecs: Fix bytesused value + Pass the actual amount of bytes we have copied into the bitstream buffer. Also + unmap the memory before queuing. + +2020-02-16 14:53:08 -0500 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codech264dec.c: + v4l2codech264dec: Implement finish frame + This enables the request to be processed by the HW (STREAMON) and to be pushed + downstream for further processing. + +2020-02-16 14:51:37 -0500 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2decoder.c: + * sys/v4l2codecs/gstv4l2decoder.h: + v4l2codecdecoder: Add support for dequeuing buffers + This includings polling of the request and streamon/streamoff. + +2020-02-14 22:13:05 -0500 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codech264dec.c: + v4l2codech264dec: Implement queuing + We now pass the controls, associated to a request, queue the bitstream, qeueue + a picture buffer to decode into and finally queue the request. This now runs + until the buffer pool is exhausted. The next step will be to dequeue. + +2020-02-14 22:03:17 -0500 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2decoder.c: + * sys/v4l2codecs/gstv4l2decoder.h: + v4l2decoder: Add helpers to queue buffer and requests + +2020-02-14 21:57:34 -0500 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codecallocator.c: + * sys/v4l2codecs/gstv4l2codecallocator.h: + * sys/v4l2codecs/gstv4l2codecpool.c: + * sys/v4l2codecs/gstv4l2codecpool.h: + v4l2codec: Add getter for buffer index in allocator and pool + +2020-02-13 17:46:29 -0500 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codecallocator.c: + * sys/v4l2codecs/gstv4l2codech264dec.c: + v4l2h264codecdec: Copy bitstream parameter and data + In this patch we fill the control structure with the bitstream paramter and + copy the bitstream data into V4L2 memory. Slice paramters are only the subset + of what Hantro needs, without any support for interlaced content. + +2020-02-12 23:50:42 -0500 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codech264dec.c: + v4l2slh264dec: Use the newly introduced allocator / pool + We now allocate and free the memory needed for streaming. + +2020-02-12 23:45:14 -0500 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codecallocator.c: + * sys/v4l2codecs/gstv4l2codecallocator.h: + * sys/v4l2codecs/gstv4l2codecpool.c: + * sys/v4l2codecs/gstv4l2codecpool.h: + * sys/v4l2codecs/meson.build: + v4l2codec: Add allocator and pool implementation + This is a pooling allocator and the buffer pool does nothing other then + reusing the GstBuffer structure. Note that the pool is an internal pool, so + the start/stop/set_config virtual functions are not implemented. + +2020-02-12 23:39:25 -0500 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2decoder.c: + * sys/v4l2codecs/gstv4l2decoder.h: + v4l2codec: decoder: Add allocation helper + +2020-02-10 18:05:39 -0500 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codech264dec.c: + * sys/v4l2codecs/gstv4l2decoder.c: + * sys/v4l2codecs/gstv4l2decoder.h: + v4l2codecs: Implement H264 format negotiation + +2020-02-10 18:02:37 -0500 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2format.c: + * sys/v4l2codecs/gstv4l2format.h: + * sys/v4l2codecs/meson.build: + v4l2codecs: Add initial formats helpers + +2020-02-09 11:31:11 -0500 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codech264dec.c: + * sys/v4l2codecs/gstv4l2codech264dec.h: + * sys/v4l2codecs/gstv4l2decoder.c: + * sys/v4l2codecs/gstv4l2decoder.h: + * sys/v4l2codecs/meson.build: + * sys/v4l2codecs/plugin.c: + v4l2codecs: Add skeleton of H264 decoder + This introduces the skeleton of the H264 decoder. The plugin will list the + devices and register a subclass of the GstV4L2CodecH264Dec base class. The + subclass will pick the required specific information from the GstV4L2Device + stored in the subclass structure. + +2020-02-05 21:42:56 -0500 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2decoder.c: + * sys/v4l2codecs/gstv4l2decoder.h: + * sys/v4l2codecs/meson.build: + v4l2codec: Add GstV4L2Deocder helper object + This is a GstObject which will be used to hold on media and video device file + descriptor and provide abstracted ioctl calls with these descriptor. At the + moment this helper contains just enough to enumerate the supported format. + This part will be used by the plugin to register the CODEC specific elements.. + +2020-02-05 21:18:57 -0500 Nicolas Dufresne + + * sys/v4l2codecs/linux/h264-ctrls.h: + * sys/v4l2codecs/linux/media.h: + * sys/v4l2codecs/linux/types-compat.h: + * sys/v4l2codecs/linux/v4l2-common.h: + * sys/v4l2codecs/linux/v4l2-controls.h: + * sys/v4l2codecs/linux/videodev2.h: + v4l2codecs: Copy all needed Linux kernel headers + Most of the features we need are very early or not expose yet in the uAPI. + Using an internal copy ensure that we everything we need is defined avoiding + to add load of checks and conditionnal code. + +2020-02-04 15:52:45 -0500 Nicolas Dufresne + + * meson_options.txt: + * sys/v4l2codecs/gstv4l2codecdevice.c: + * sys/v4l2codecs/gstv4l2codecdevice.h: + * sys/v4l2codecs/meson.build: + * sys/v4l2codecs/plugin.c: + v4l2codecs: Add device enumeration + This introduces a GstV4L2CodecDevice structure and helper to retrieve a + list of CODEC device drivers. In order to find the device driver we + enumerate all media devices with UDEV. We then get the media controller + topology and locate a entity with function encoder or decoder and make + sure it is linked to two V4L2 IO entity pointing to the same device + node. + +2020-02-03 10:06:46 -0500 Nicolas Dufresne + + * sys/meson.build: + * sys/v4l2codecs/meson.build: + * sys/v4l2codecs/plugin.c: + v4l2codecs: Introdude a V4L2 CODECs Accelerator plugin + This plugin will support new CODECs uAPI in the Linux kernel. These + consist of an accelerator interface similar to DXVA, NVDEC, VDPAU and + VAAPI. + +2020-03-30 20:21:37 +0900 Seungha Yang + + * sys/msdk/gstmsdkh264enc.c: + * sys/msdk/gstmsdkh264enc.h: + msdkh264enc: Port to h264parser API for frame packing SEI injection + Create frame packing SEI memory only once per set_format() and + reuse it if possible. + +2020-03-24 19:23:46 +0900 Seungha Yang + + * gst/videoparsers/gsth264parse.c: + h264parse: Print all the syntax elements of frame packing for debugging + Other values might be useful for debugging + +2020-03-18 10:11:19 +0800 Haihao Xiang + + * sys/msdk/gstmsdkenc.c: + * sys/msdk/gstmsdkenc.h: + * sys/msdk/gstmsdkh265enc.c: + msdkh265enc: support 8-bit 422 encoding + The media driver can support HEVC 8-bit 422 encoding for non-lowpower + mode since ICL[1], so VPP is not needed for this case. + Sample pipeline: + gst-launch-1.0 videotestsrc ! video/x-raw,format=YUY2 ! msdkh265enc ! \ + filesink location=output.h265 + [1] https://github.com/intel/media-driver#decodingencoding-features + +2020-03-17 15:18:37 +0800 Haihao Xiang + + * sys/msdk/gstmsdkenc.c: + * sys/msdk/gstmsdkh265enc.c: + msdkh265enc: add support for Y210 in sink pad + Sample pipeline: + gst-launch-1.0 videotestsrc ! video/x-raw,format=Y210 ! + msdkh265enc ! filesink location=output.h265 + +2020-03-20 09:53:28 +0800 Haihao Xiang + + * sys/msdk/msdk.c: + * sys/msdk/msdk.h: + msdk: add a helper function to get codename of the platform + The features supported in MSDK vary from platform to platform. We may + support some features based on the codename of the platform in future. + +2020-03-24 16:00:30 +0900 Seungha Yang + + * sys/msdk/gstmsdkenc.c: + msdkenc: Try to find corresponding codec frame for encoded output buffer + The input and output buffers should be matched as much as possible + so that various metadata and its ordering to be preserved. + +2020-03-22 20:15:42 +0900 Seungha Yang + + * sys/msdk/gstmsdkh264enc.c: + * sys/msdk/gstmsdkh264enc.h: + * sys/msdk/meson.build: + msdkh264enc: Add support for CEA708 closed caption insertion + Currently supported caption format is CEA708_RAW + +2020-03-25 17:20:13 +0900 Seungha Yang + + * gst-libs/gst/codecparsers/gsth264parser.c: + * gst-libs/gst/codecparsers/gsth264parser.h: + * tests/check/libs/h264parser.c: + h264parser: Add a helper method to create and inject raw SEI data + Add an API to create raw SEI nal unit. This would be useful in case + an user want to create SEI nal data and inject the SEI nal data + into bitstream. + +2020-03-19 18:25:18 +0900 Seungha Yang + + * gst-libs/gst/codecparsers/nalutils.c: + * gst-libs/gst/codecparsers/nalutils.h: + * tests/check/libs/nalutils.c: + * tests/check/meson.build: + nalutils: Introduce NAL writer helper methods + Add helper methods for writing h264 and h265 NAL + +2020-03-22 13:59:52 +0900 Seungha Yang + + * gst-libs/gst/codecparsers/gsth264parser.c: + * gst-libs/gst/codecparsers/gsth264parser.h: + h264parser: Expose SEI clear function to public + gsth265parser does it already. Although corresponding API of h265parser is + gst_h265_sei_free, _clear suffix is more consistent naming for h264parser + since there are gst_h264_{sps,pps}_clear(). + +2020-03-29 17:34:48 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.c: + d3d11decoder: Add support for array of texture DPB + DXVA supports two kinds of texture structure for DPB, one is + "1) texture array" and the other is "2) array of texture". + 1) is a type of texture which is single ID3D11Texture2D object having + ArraySize greater than one. So the ID3D11Texture2D itself is a set of texture. + Each sub texture of this type mush have identical resolution, format and so on, + and the number of sub texture in a texture array is fixed. + 2) is an array of usual ID3D11Texture2D object. That means each + ID3D11Texture2D is independent each other and might have different resolution as well. + Moreover, we can modify the number of frames of the array dynamically. + This type is more flexible than "1) texture array" in terms of dynamic + behavior and also this type of texture can be used for shader resource view + but "1) texture array" couldn't be. + If "2) array of texture" is supported by driver, DXVA spec is saying that + it's preferred format over "1) texture array" in terms of performance. + +2019-11-26 15:42:03 +0800 Haihao Xiang + + * sys/msdk/gstmsdkh265enc.c: + * sys/msdk/gstmsdkh265enc.h: + msdkh265enc: slice size control + Add max-slice-size property to set the maximum slice size + +2020-03-27 18:05:55 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.c: + * sys/d3d11/gstd3d11decoder.h: + * sys/d3d11/gstd3d11h264dec.c: + * sys/d3d11/gstd3d11h265dec.c: + * sys/d3d11/gstd3d11vp9dec.c: + Revert "d3d11decoder: Check decoder status report" + This reverts commit 418e6991c19ab5ae6bcf1890f9b947c748ca834d. + Not all drivers seem to be friendly to this API. + Revert to avoid incomprehensible crash with Nvidia. + +2020-03-26 21:20:20 +0900 Seungha Yang + + * sys/d3d11/gstd3d11window.cpp: + d3d11window: Always reuse swapchain + DXGI format can be updated via ResizeBuffers() + +2020-03-09 20:29:17 +0900 Seungha Yang + + * sys/d3d11/gstd3d11format.c: + * sys/d3d11/gstd3d11format.h: + * sys/d3d11/gstd3d11window.cpp: + * sys/d3d11/gstd3d11window.h: + d3d11window: Reorganize display colorspace selection + The set of supported color space by DXGI is not full combination of + our colorimetry. That means we should convert color space to one + of supported color space by DXGI. This commit modifies the color space + selection step so that d3d11window can find the best matching DXGI color space + first and then the selected input/output color space will be referenced + by shader and/or d3d11videoprocessor. + +2020-03-27 15:40:00 +0900 Seungha Yang + + * gst/rtmp2/gstrtmp2src.c: + rtmp2src: Add idle-timeout property + Add new property to signalling that there is no incoming data + from peer. This can be useful if users want to stop the streaming + when the connection is alive but no packet is arriving. + +2020-03-27 10:34:25 +1100 Matthew Waters + + * ext/dtls/gstdtlsconnection.c: + dtls/connection: fix EOF handling with openssl 1.1.1e + openssl 1.1.1e does some stricker EOF handling and will throw an error + if the EOF is unexpected (like in the middle of a record). As we are + streaming data into openssl here, it is entirely possible that we push + data from multiple buffers/packets into openssl separately. + From the openssl changelog: + Changes between 1.1.1d and 1.1.1e [17 Mar 2020] + *) Properly detect EOF while reading in libssl. Previously if we hit an EOF + while reading in libssl then we would report an error back to the + application (SSL_ERROR_SYSCALL) but errno would be 0. We now add + an error to the stack (which means we instead return SSL_ERROR_SSL) and + therefore give a hint as to what went wrong. + [Matt Caswell] + We can relax the EOF signalling to only return TRUE when we have stopped + for any reason (EOS, error). + Will also remove a spurious EOF error from previous openssl version. + +2020-03-25 14:46:15 +1100 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + webrtc: mark streams as active on renegotiation as well. + Otherwise when bundling, only the changed streams would be considered as + to whether the bundled transport needs to be blocked as all streams are + inactive. + Scenario is one transceiver changes direction to inactive and as that is + the only change in transciever direction, the entire bundled transport would + be blocked even if there are other active transceivers inside the same bundled + transport that are still active. + Fix by always checking the activeness of a stream regardless of if the + transceiverr has changed direction. + +2020-01-13 13:50:26 +0530 Guillaume Desmottes + + * gst/interlace/gstinterlace.c: + interlace: add alternate support + Allow downstream elements to negotiate the alternate interlace mode, + splitting each input buffer in two fields, each having their own buffer. + +2020-02-28 12:31:46 +0530 Guillaume Desmottes + + * gst/interlace/gstinterlace.c: + interlace: factor out interlace_mode_from_pattern() + +2020-01-23 15:17:45 +0530 Guillaume Desmottes + + * gst/interlace/gstinterlace.c: + interlace: factor out gst_interlace_push_buffer() + +2020-01-23 15:10:36 +0530 Guillaume Desmottes + + * gst/interlace/gstinterlace.c: + interlace: factor out gst_interlace_decorate_buffer_ts() + +2020-01-23 14:31:02 +0530 Guillaume Desmottes + + * gst/interlace/gstinterlace.c: + interlace: rename copy_field() + It is actually copying both fields (to a single frame/buffer). + +2020-03-21 20:16:04 +0900 Seungha Yang + + * tests/check/libs/h265parser.c: + tests: h265parser: Add test for registered user data SEI + +2020-03-21 19:41:28 +0900 Seungha Yang + + * gst-libs/gst/codecparsers/gsth265parser.c: + h265parser: Fix registered user data SEI leak + ... and add fix for the SEI data in gst_h265_sei_copy() + +2020-03-21 18:25:25 +0900 Seungha Yang + + * gst-libs/gst/codecparsers/gsth265parser.c: + * gst-libs/gst/codecparsers/gsth265parser.h: + h265parser: Do not allocate too large size of memory for registered user data SEI + Don't be confused by the unit of payload size (i.e., bits and bytes) + Also this need a documentation with Since mark + +2020-03-21 18:39:42 +0900 Seungha Yang + + * gst-libs/gst/codecparsers/gsth264parser.c: + * gst-libs/gst/codecparsers/gsth264parser.h: + h264parser: Do not allocate too large size of memory for registered user data SEI + Don't be confused by the unit of payload size (i.e., bits and bytes) + Also this need a documentation with Since mark + +2020-03-23 12:55:13 +0000 Philippe Normand + + * ext/wpe/WPEThreadedView.h: + wpe: Enable SHM support for new stable WPEBackend-FDO release + 1.5.0 was the development version. + +2020-02-10 18:28:05 +0000 Philippe Normand + + * ext/wpe/gstwpesrc.cpp: + wpe: Mouse scroll events support + +2020-02-29 22:19:57 -0600 James Westman + + * sys/applemedia/avfdeviceprovider.m: + applemedia: Add some properties to GstAvfDevice + Adds properties to the devices listed in GstDeviceMonitor by the + applemedia plugin. + These properties are: + - device.api (always set to "avf") + - avf.unique_id + - avf.model_id + - avf.manufacturer (except on iOS) + - avf.has_flash + - avf.has_torch + Everything except device.api is taken directly from the AVCaptureDevice object + provided by AVFoundation. + +2020-03-20 20:27:05 +0900 Seungha Yang + + * gst/mpegtsdemux/tsdemux.c: + tsdemux: Set mpegversion for AAC ADTS stream based on parsed ADTS header + Both 2 and 4 are supported version of AAC ADTS format stream. + So we need to set correct version to help negotiation + especially for non-autopluggable pipeline. + +2020-03-10 15:42:48 +0800 Haihao Xiang + + * sys/msdk/gstmsdkh265dec.c: + msdkh265dec: add support for main-12, main-12-intra profiles + The video format is P012_LE + +2020-03-10 16:03:55 +0800 Haihao Xiang + + * sys/msdk/gstmsdkallocator_libva.c: + msdk: map P012_LE to VA_FOURCC_P016 + In media driver, VA_FOURCC_P016 is used for semi-planar 12 bits YUV + format, the corresponding RT format is VA_RT_FORMAT_YUV420_12 + +2020-03-10 15:41:50 +0800 Haihao Xiang + + * sys/msdk/gstmsdkallocator_libva.c: + * sys/msdk/msdk_libva.c: + msdk: map MFX_FOURCC_P016 to VA_FOURCC_P016 + P016 is used for semi-planar 12 bits format in the media driver, so the + RT format is VA_RT_FORMAT_YUV420_12 + +2020-03-10 15:32:43 +0800 Haihao Xiang + + * sys/msdk/gstmsdksystemmemory.c: + * sys/msdk/msdk.c: + msdk: map P012_LE to MFX_FOURCC_P016 + MFX_FOURCC_P016 is used for semi planar 12 bits YUV format in MediaSDK + +2020-03-20 14:53:40 +0800 Haihao Xiang + + * sys/msdk/gstmsdkvp9enc.c: + msdkvp9enc: add support for 10 bits 444 input + The input format is Y410 in sink pad and the corresponding profile in + src pad is profile 3 + +2020-03-20 14:38:12 +0800 Haihao Xiang + + * sys/msdk/gstmsdkvp9enc.c: + msdkvp9enc: add support for 8 bits 444 input + The input format is VUYA in sink pad and the corresponding profile in + src pad is profile 1 + +2020-03-22 22:30:15 +0900 Seungha Yang + + * sys/msdk/gstmsdkbufferpool.c: + msdkbufferpool: Fix build warning on Windows + gstmsdkbufferpool.c(274): warning C4101: 'fd': unreferenced local variable + +2020-01-22 11:29:03 +0000 Guillermo Rodríguez + + * tests/examples/waylandsink/main.c: + * tests/examples/waylandsink/wayland-threads.c: + examples/wayland: unref GstContext after use + +2020-03-19 09:28:28 -0700 U. Artie Eoff + + * sys/msdk/gstmsdkvpp.c: + msdkvpp: add YV12 format to src pad + VPP YV12 output format support added since + MFX_VERSION 1032. + https://github.com/Intel-Media-SDK/MediaSDK/pull/2027 + +2020-03-15 19:20:47 +0900 Seungha Yang + + * sys/nvcodec/gstcudaloader.c: + * sys/nvcodec/gstcudaloader.h: + * sys/nvcodec/gstnvdec.c: + * sys/nvcodec/stub/cuda.h: + nvdec: Add fallback for CUDA/OpenGL interop failure + It happens when local OpenGL context belongs to non-nvidia GPU. + +2020-03-16 17:19:04 +0100 Victor Manuel Jaquez Leal + + * gst-libs/gst/codecparsers/gstmpeg4parser.h: + * gst-libs/gst/codecparsers/gstvp8parser.h: + libs: codecparser: add missing unstable api warning + mpeg4 and vp8 parsers didn't show that compilation warning as the + others parsers. + +2020-03-15 12:44:31 +0000 Philippe Normand + + * ext/webrtcdsp/gstwebrtcechoprobe.cpp: + webrtcdsp: Fix documentation markup + +2020-03-15 10:46:24 +0000 Philippe Normand + + * ext/openni2/gstopenni2src.cpp: + openni2: Remove spurious gtk-doc markers + +2020-03-15 10:45:25 +0000 Philippe Normand + + * sys/decklink/gstdecklink.cpp: + decklink: Remove spurious gtk-doc marker + +2020-03-13 17:47:46 +0000 Philippe Normand + + * docs/meson.build: + docs: Scan C++ files too + +2020-02-12 11:23:18 +0800 Haihao Xiang + + * sys/msdk/meson.build: + msdk: meson: check whether mfxExtVP9Param is defined + User reported MFX_VERSION is 1026 however the build is broken[1], so add + the check for mfxExtVP9Param to make sure it can be build without + compiler error. + In addtion, it fixes a stupid typo (#endif') introduced by me. + [1] https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/merge_requests/988#note_408093 + +2020-03-12 12:13:10 +0100 rubenrua + + * docs/plugins/gst_plugins_cache.json: + * gst/asfmux/gstasfmux.c: + * gst/asfmux/gstasfmux.h: + * sys/msdk/gstmsdkcontext.c: + asfmux: Fix typo in property description + s/milisecs/milliseconds/g + +2020-03-11 21:37:27 -0300 Thibault Saunier + + * gst/timecode/gsttimecodestamper.c: + timecodestamper: Plug a leak + +2020-02-01 11:52:04 +0100 Edward Hervey + + * gst/mpegtsdemux/mpegtsbase.c: + * gst/mpegtsdemux/mpegtsbase.h: + mpegts: Add a property to ignore broken PCR streams + Some mpeg-ts (HLS, DVB, ...) streams out there have completely broken + PCR streams on which we can't reliably recover correct timestamps. + For those, provide a property that will ignore the program PCR stream + (by faking that it's not present (0x1fff)). + +2020-03-11 17:18:56 +0900 Seungha Yang + + * gst/mpegdemux/gstmpegdemux.c: + * gst/mpegdemux/gstmpegdemux.h: + mpegdemux: Add ignore-scr property to ignore broken SCR + Some MPEG-PS streams might not be compliant but the SCR can be ignored + if PTS/DTS in PES header is consistently increased. + +2020-03-11 17:42:18 +0900 Seungha Yang + + * gst/mpegdemux/gstmpegdemux.c: + mpegdemux: Remove whitespace + +2020-03-10 11:52:23 +0800 yychao + + * ext/smoothstreaming/gstmssmanifest.c: + smoothstreaming: fix H264 CodecPrivateData parsing + Do not pass SPS nal_unit_type (0x67) into gst_h264_parse_sps() + Fixes #648 + +2020-03-10 17:40:28 +0900 Seungha Yang + + * gst/videoparsers/gsth265parse.c: + * gst/videoparsers/gsth265parse.h: + h265parse: In-band sps/pps update if only codec_data differs in src caps + Apply in-band sps/pps resending implementation to h265parse. + +2020-03-10 13:20:17 +0900 Seungha Yang + + * gst/videoparsers/gsth264parse.c: + * gst/videoparsers/gsth264parse.h: + h264parse: In-band sps/pps update if only codec_data differs in src caps + Initially the case "only codec_data is different" was addressed in + https://bugzilla.gnome.org/show_bug.cgi?id=705333 in order for + unusual bitstreams to be handled. That's the case where sps and pps + are placed in bitstream. When sps/pps are signalled only via caps + by upstream, however, the updated codec_data is mandatory for decoder + and therefore we shouldn't ignore them. + +2020-03-10 16:32:59 +0900 Dong Il Park + + * gst/mpegtsdemux/gstmpegdesc.h: + * gst/mpegtsdemux/tsdemux.c: + tsdemux: Add format_identifier for AC4 codec + According to following spec document, add format_identifier for AC4 in tsdemux. + ETSI TS 103 190-2 V1.2.1 : Annex D : AC-4 in MPEG-2 transport stream + +2020-03-09 17:00:01 +0800 yychao + + * gst-libs/gst/mpegts/gst-dvb-descriptor.h: + * gst/mpegtsdemux/gstmpegdefs.h: + * gst/mpegtsdemux/tsdemux.c: + tsdemux: Add support for AC4 + According to following two specs, add support for AC4 in tsdemux. + 1. ETSI TS 103 190-2 V1.2.1 (2018-02) : Annex D (normative): AC-4 in MPEG-2 transport streams + 2. ETSI EN 300 468 V1.16.1 (2019-08) : Annex D (normative):Service information implementation of AC-3, EnhancedAC-3, and AC-4 audio in DVB systems + +2020-03-09 21:21:19 +0200 Sebastian Dröge + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/gstwebrtcbin.h: + webrtcbin: Use GPtrArrays or store items inline instead of using GArrays of pointers + +2020-03-10 05:18:40 +1100 Jan Schmidt + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/gstwebrtcbin.h: + webrtcbin: Prevent ICE gathering state reaching complete early + The ICE gathering state can transition to complete prematurely if the + underlying ICE components complete their gathering while the initial + ICE gathering state task is queued and still pending. + In that situation, the ice gathering state task will report complete + while there are still ICE candidates queued for emission. + Prevent that by storing ICE candidates in an array and checking if + there are any pending before reporting a completed ICE gathering + state. + +2020-03-10 04:22:57 +1100 Jan Schmidt + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/gstwebrtcbin.h: + webrtc: Protect the pending ICE candidates array + ICE candidates can be added to the array directly from the application + or from the webrtc main loop. Rename it to make it clear that it's + holding remote ICE candidates from the peer, and protect it with a + new mutex + +2020-03-07 19:41:53 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.c: + * sys/d3d11/gstd3d11decoder.h: + * sys/d3d11/gstd3d11h264dec.c: + * sys/d3d11/gstd3d11h265dec.c: + * sys/d3d11/gstd3d11vp9dec.c: + d3d11vp9dec: Add support for internal frame resizing + VP9 codec allows resizing reference frame by spec. Handling this case + is a bit tricky especially when the resizing happens on non-keyframe, + because pre-allocated decoder textures (i.e., dpb) have negotiated + resolution and to change resolution meanwhile decoding on non-keyframe, + each texture might need to be re-created, copied to new dpb somehow, + and re-negotiated with downstream. + Due to the complicated requirement of negotiation driven + resizing handling, this commit adds shader into d3d11decoder object + to resize only corresponding frames. Note that if the resolution change + is detected on keyframe, decoder will re-negotiate with downstream. + +2020-03-07 19:38:30 +0900 Seungha Yang + + * sys/d3d11/gstd3d11h264dec.c: + * sys/d3d11/gstd3d11h265dec.c: + * sys/d3d11/gstd3d11vp9dec.c: + d3d11decoder: Set GstVideoAlignment to downstream d3d11 buffer pool + To copy decoder output texture to another d3d11 texture, the downstream + texture needs to be aligned too. + +2020-03-07 16:42:14 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.c: + d3d11decoder: Use aligned resolution for staging texture + Not only any textures for decoder output view, any destination texture + which would be copied from decoder output texture need to be aligned too. + Otherwise driver sometimes crashed/hung (not sure why). + +2020-03-07 18:29:20 +0900 Seungha Yang + + * sys/d3d11/gstd3d11colorconverter.c: + * sys/d3d11/gstd3d11colorconverter.h: + d3d11colorconverter: Add support cropping + Vertex buffer will be updated if input texture resolution is different + from GstVideoInfo or when an user requests specific crop area. + +2020-03-07 15:10:43 +0900 Seungha Yang + + * sys/d3d11/gstd3d11bufferpool.c: + d3d11bufferpool: Add padding space for semi-planar YUV formats + Resolution of NV12, P010, and P016 formats must be multiple of two. + Otherwise texture cannot be created. Instead of doing this alignment + per API consumer side, do this in buffer pool for simplicity. + +2020-03-08 16:10:41 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth265decoder.c: + * gst-libs/gst/codecs/gsth265decoder.h: + * sys/d3d11/gstd3d11h265dec.c: + h265decoder: Pass max_dpb_size to new_sequence vfunc + same as we are doing in h264decoder + +2020-03-08 16:03:35 +0900 Seungha Yang + + * sys/d3d11/gstd3d11h264dec.c: + d3d11h264dec: Make use of max_dpb_size passed by baseclass + Most likely this modification can save GPU memory. + +2020-02-26 20:24:14 +0900 Seungha Yang + + * sys/d3d11/gstd3d11h265dec.c: + d3d11h265dec: Fix scaling list parsing + Scaling list can be signalled via sps or pps. Decoder should check + both of them. + +2020-02-26 17:44:52 +0900 Seungha Yang + + * sys/d3d11/gstd3d11h265dec.c: + d3d11h265dec: Properly signal the ucNumDeltaPocsOfRefRpsIdx + ucNumDeltaPocsOfRefRpsIdx should be the NumDeltaPocs[RefRpsIdx]. + +2020-02-26 17:33:59 +0900 Seungha Yang + + h265parser: Store NumDeltaPocs of reference for hardware accelerators + That's the value of NumDeltaPocs[RefRpsIdx] and we might be able to derive + the value from given sps and slice header. + Because well known hardware implementations refer to the value, however, + storing the value makes things easier. + Following is the list of hardware implementations + * DXVA2: ucNumDeltaPocsOfRefRpsIdx + * NVDEC/VDPAU: NumDeltaPocsOfRefRpsIdx + +2020-02-24 20:53:49 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth265decoder.c: + h265decoder: Fix for output and removal picture from DPB + See C.5.2.2 Output and removal of pictures from the DPB. + If the number of pictures in the DPB is greater than or equal to + sps_max_dec_pic_buffering_minus1[HighestTid] + 1, then the picture + should be outputted. + +2020-03-06 16:40:50 +0900 Seungha Yang + + * gst-libs/gst/codecs/meson.build: + meson: codecs: Don't install header + This library is not intended to be public. APIs are likely to + change over time and should not be disclosed to people yet. + +2020-03-05 14:40:28 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264decoder.c: + h264decoder: Rename some internals + No more a part of d3d11 implementation + +2020-03-05 14:35:14 +0900 Seungha Yang + + * gst-libs/gst/codecs/gstvp9decoder.c: + * gst-libs/gst/codecs/gstvp9decoder.h: + vp9decoder: Update document + s/GstH264Picture/GstVp9Picture/g and minor update since this baseclass + is no more d3d11 specific one. + +2020-03-05 14:29:22 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264decoder.c: + * gst-libs/gst/codecs/gsth264decoder.h: + * gst-libs/gst/codecs/gsth265decoder.c: + * gst-libs/gst/codecs/gsth265decoder.h: + * gst-libs/gst/codecs/gstvp9decoder.c: + * gst-libs/gst/codecs/gstvp9decoder.h: + codecs: Change output_picture() to mandatory implementation + GstVideoCodecFrame is expected to be consumed by subclass + per output_picture(). So the implementation cannot be optional. + +2020-03-05 17:23:34 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth265decoder.c: + * gst-libs/gst/codecs/gsth265decoder.h: + * sys/d3d11/gstd3d11h265dec.c: + h265decoder: Port to nal type classification macro + ... and remove namespaceless macro methods from baseclass + +2020-03-05 15:18:35 +0900 Seungha Yang + + * gst-libs/gst/codecparsers/gsth265parser.c: + * gst-libs/gst/codecparsers/gsth265parser.h: + * gst/videoparsers/gsth265parse.c: + * tests/check/libs/h265parser.c: + h265parser: Add helper macro for nal type classification + Add some macros to remove code duplication and to make it more readable + +2020-03-05 09:17:49 -0300 Thibault Saunier + + * gst/transcode/gsttranscodebin.c: + transcodebin: Avoid elements name duplication + By just letting GStreamer choose a good name + +2020-03-03 15:21:07 -0500 Nicolas Dufresne + + * sys/d3d11/gstd3d11h264dec.c: + * sys/d3d11/gstd3d11h265dec.c: + * sys/d3d11/gstd3d11vp9dec.c: + d3d11: Use gst_video_decoder_get_frame() + Now that the system_frame_number is saved on the pictures we can use + gst_video_decoder_get_frame() helper instead of getting the full list + and looping over it. + +2020-02-14 21:50:15 -0500 Nicolas Dufresne + + * gst-libs/gst/codecs/gsth264decoder.c: + * gst-libs/gst/codecs/gsth264picture.h: + * gst-libs/gst/codecs/gsth265decoder.c: + * gst-libs/gst/codecs/gsth265picture.h: + * gst-libs/gst/codecs/gstvp9decoder.c: + * gst-libs/gst/codecs/gstvp9picture.h: + h264picture: Add system_frame_num + This allow cross-referencing GstH264Picture and GstVideoCodecFrame. + +2020-02-14 21:49:12 -0500 Nicolas Dufresne + + * gst-libs/gst/codecparsers/gsth264parser.h: + h264parser: Add some fixmes + Some of the syntax element do not use the spec name, which makes them harder + to find in the spec. + +2020-02-12 23:48:16 -0500 Nicolas Dufresne + + * gst-libs/gst/codecs/gsth264decoder.c: + * gst-libs/gst/codecs/gsth264decoder.h: + * sys/d3d11/gstd3d11h264dec.c: + codecs: Pass the max_dpb_size to new_segment virtual + On new_segment, the decoder is expected to negotiate. The decoder may want to + pre-allocate the needed buffers. Pass the max_dpb_size as this is needed to + determin how many buffers should be allocated. + +2020-02-09 11:20:16 -0500 Nicolas Dufresne + + * gst-libs/gst/codecs/gsth264decoder.h: + * gst-libs/gst/codecs/gsth264picture.h: + * gst-libs/gst/codecs/gsth265decoder.h: + * gst-libs/gst/codecs/gsth265picture.h: + * gst-libs/gst/codecs/gstvp9decoder.h: + * gst-libs/gst/codecs/gstvp9picture.h: + codecs: Add missing auto cleanup funcs + +2020-01-31 17:54:57 -0500 Nicolas Dufresne + + * gst-libs/gst/codecs/codecs-prelude.h: + * gst-libs/gst/codecs/gsth264decoder.c: + * gst-libs/gst/codecs/gsth264decoder.h: + * gst-libs/gst/codecs/gsth264picture.c: + * gst-libs/gst/codecs/gsth264picture.h: + * gst-libs/gst/codecs/gsth265decoder.c: + * gst-libs/gst/codecs/gsth265decoder.h: + * gst-libs/gst/codecs/gsth265picture.c: + * gst-libs/gst/codecs/gsth265picture.h: + * gst-libs/gst/codecs/gstvp9decoder.c: + * gst-libs/gst/codecs/gstvp9decoder.h: + * gst-libs/gst/codecs/gstvp9picture.c: + * gst-libs/gst/codecs/gstvp9picture.h: + * gst-libs/gst/codecs/meson.build: + * gst-libs/gst/meson.build: + * sys/d3d11/gstd3d11h264dec.c: + * sys/d3d11/gstd3d11h265dec.c: + * sys/d3d11/gstd3d11vp9dec.c: + * sys/d3d11/meson.build: + Move CODEC base classes into it's own library + This introduce a library which contains a set of base classes which + handles the parsing and the state tracking for the purpose of decoding + different CODECs. Currently H264, H265 and VP9 are supported. These + bases classes are used to decode with low level decoding API like DXVA, + NVDEC, VDPAU, VAAPI and V4L2 State Less decoders. The new library is + named gstreamer-codecs-1.0 / libgstcodecs. + +2020-03-05 04:18:03 +1100 Jan Schmidt + + * ext/webrtc/gstwebrtcbin.c: + webrtc: Don't crash in ICE gathering + Fix a crash collating ICE gathering states if there are + unassociated transceivers in the list with no TransportStream + +2020-03-03 14:56:47 +0530 Guillaume Desmottes + + * gst/transcode/gsttranscodebin.c: + transcodebin: add converters before filters + User doesn't have any guarantee about the actual raw format decodebin will + produce so their filters may or may not fit. + Fix #1228 + +2020-03-03 15:21:31 +0530 Guillaume Desmottes + + * gst/transcode/gsttranscodebin.c: + transcodebin: fix logs when failing to link filter + - Display caps of the pad we actually tried to link. + - Use the template caps as the filter is likely to not have any caps set + yet. + - Log pad name as well. + +2020-02-21 13:12:39 -0300 Thibault Saunier + + * gst/timecode/gsttimecodestamper.c: + * gst/timecode/gsttimecodestamper.h: + timecodestamper: Add seeking support + The approach is quite simple and doesn't take all use cases into account, + it only implements support when we are using the internal timecode we + create ourself. + Also the way we compute the sought frame count is naive, but it works + for simple cases. + +2020-03-03 03:39:50 +1100 Jan Schmidt + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/transportstream.h: + webrtc: Unblock transportreceivebin for send-only bundled streams + If there is any active mline in a bundle, we need to unblock + the transportreceivebin for DTLS setup and RTCP reception, + otherwise no data can ever start flowing. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1206 + +2020-02-29 01:47:52 +1100 Jan Schmidt + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/transportreceivebin.c: + * ext/webrtc/transportreceivebin.h: + webrtc: Remove RECEIVE_STATE_DROP from transportreceivebin + As per discussion in the bug, remove the drop state from transportreceivebin. + Dropping data is necessary, but for bundled config, needs to happen + further downstream after mixed flows have been separated. + Also support switching back to BLOCK from PASS state. + https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1206 + +2020-02-27 14:54:13 +0100 Dominique Leuenberger + + * gst-libs/gst/wayland/meson.build: + build: Fix build on systems with wayland-client headers in non-default location + Add a missing dependency to wl_client_dep for the wayland build. Some distros + have the wayland-client headers not installed in /usr/include (which is perfectly + valid, the pkg-config .pc file gives the right feedback). + +2020-03-02 15:22:49 +0900 Seungha Yang + + * sys/d3d11/gstvp9decoder.c: + d3d11vp9dec: Add support for reverse playback + This commit moves parsing code for superframe and frame header into + handle_frame() method, and removes parse() implementation from vp9decoder + baseclass. + The combination of + - multiple frames are packed in a given input buffer (i.e., superframe) + - reverse playback + seems to be complicated and also it doesn't work as intended in some case + +2020-03-03 10:49:08 +0100 Jan Alexander Steffens (heftig) + + * gst/rtmp2/gstrtmp2sink.c: + * gst/rtmp2/gstrtmp2src.c: + rtmp2: Only grab stats on close when connection exists + If the connection attempt failed, self->connection is NULL. + +2020-02-29 12:49:06 +0000 Matthew Read + + * sys/opensles/openslessink.c: + openslessink: Allow openslessink to handle 48kHz streams. + The most common audio sample rate in AV streams is 48kHz, and the most + common device output sample rate is 48kHz. This allows handing of 48kHz + input streams without resampling. + Remove comments about avoiding the use of 48kHz. + +2020-02-27 14:10:16 +0000 Heinrich Kruger + + * sys/decklink/gstdecklink.cpp: + * sys/decklink/gstdecklink.h: + decklink: Add support for 2K DCI video modes + Extend the video modes supported by the decklink plugin to include 2K + DCI video modes. + +2020-02-27 11:32:17 +0000 Heinrich Kruger + + * sys/decklink/linux/DeckLinkAPI.h: + * sys/decklink/linux/DeckLinkAPIConfiguration.h: + * sys/decklink/linux/DeckLinkAPIDeckControl.h: + * sys/decklink/linux/DeckLinkAPIDiscovery.h: + * sys/decklink/linux/DeckLinkAPIDispatch.cpp: + * sys/decklink/linux/DeckLinkAPIModes.h: + * sys/decklink/linux/DeckLinkAPITypes.h: + * sys/decklink/linux/DeckLinkAPIVersion.h: + * sys/decklink/linux/LinuxCOM.h: + * sys/decklink/osx/DeckLinkAPI.h: + * sys/decklink/osx/DeckLinkAPIConfiguration.h: + * sys/decklink/osx/DeckLinkAPIDeckControl.h: + * sys/decklink/osx/DeckLinkAPIDiscovery.h: + * sys/decklink/osx/DeckLinkAPIDispatch.cpp: + * sys/decklink/osx/DeckLinkAPIModes.h: + * sys/decklink/osx/DeckLinkAPIStreaming.h: + * sys/decklink/osx/DeckLinkAPITypes.h: + * sys/decklink/osx/DeckLinkAPIVersion.h: + * sys/decklink/win/DeckLinkAPI.h: + * sys/decklink/win/DeckLinkAPI_i.c: + decklink: Update Decklink SDK to 10.11.4 + This change is needed to support 2K DCI video modes. + Version 10.8 of the Decklink SDK supported DCI video modes for output + only. This updated version drops that restriction. + The current latest version of the Decklink SDK is 11.5, however + the gstreamer decklink plugin is not compatible with API changes + introduced in version 11 of the SDK. Therefore I have opted to upgrade + to the latest 10.x version instead. + +2020-03-03 14:27:32 +1100 Matthew Waters + + * ext/dash/meson.build: + dash: add build-dep on pbutils + Fixes dependency issues: + FAILED: subprojects/gst-plugins-bad/ext/dash/8bd0b95@@gstdash@sha/gstdashsink.c.obj + cl @subprojects/gst-plugins-bad/ext/dash/8bd0b95@@gstdash@sha/gstdashsink.c.obj.rsp + C:\builds\ystreet\gst-plugins-base\gst-build\subprojects\gst-plugins-base\gst-libs\gst/pbutils/pbutils.h(30): fatal error C1083: Cannot open include file: 'gst/pbutils/pbutils-enumtypes.h': No such file or directory + +2020-02-18 14:02:14 +1100 Matthew Waters + + * gst-libs/gst/vulkan/meson.build: + * gst-libs/gst/vulkan/xcb/gstvkwindow_xcb.c: + vulkan/window/xcb: implement keyboard support + +2020-02-17 15:09:58 +1100 Matthew Waters + + * gst-libs/gst/vulkan/xcb/gstvkwindow_xcb.c: + * gst-libs/gst/vulkan/xcb/xcb_event_source.c: + vulkan/window/xcb: implement mouse event support + +2020-02-17 15:08:47 +1100 Matthew Waters + + * ext/vulkan/vksink.c: + * ext/vulkan/vksink.h: + vulkan/sink: implement GstNavigation support + +2020-02-17 15:07:10 +1100 Matthew Waters + + * gst-libs/gst/vulkan/gstvkswapper.c: + * gst-libs/gst/vulkan/gstvkswapper.h: + vulkan/swapper: add get_surface_rectangles + Retrieve the input, output and covered rectangles. + +2020-02-17 15:05:49 +1100 Matthew Waters + + * gst-libs/gst/vulkan/gstvkdisplay.c: + * gst-libs/gst/vulkan/gstvkdisplay.h: + vulkan/display: implement thread-safe find_window() + +2020-02-17 15:03:34 +1100 Matthew Waters + + * gst-libs/gst/vulkan/gstvkwindow.c: + * gst-libs/gst/vulkan/gstvkwindow.h: + vulkan/window: add support for mouse/keyboard events + +2020-03-02 20:55:29 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.c: + * sys/d3d11/gstd3d11window.cpp: + * sys/d3d11/gstd3d11window.h: + * sys/d3d11/gstd3d11window_win32.cpp: + d3d11videosink: Clarify the meaning of various width and height variables + * Remove redundant variables for width/height and par from GstD3D11Window. + GstVideoInfo holds all the values. + * Don't need to pass par to gst_d3d11_window_prepare(). + It will be parsed from caps again + * Remove duplicated math + Fixing regression of the commit 9dada901083fec3276cb2df58785db14b87e8f22 + +2020-02-28 03:08:23 +0900 Yeongjin Jeong + + * sys/d3d11/gstvp9decoder.c: + d3d11vp9dec: Port to GstVP9SuperframeInfo + The vp9parser is now exposed new API for parsing superframe info. + +2020-03-02 00:43:45 +0900 Yeongjin Jeong + + * tests/check/libs/vp9parser.c: + * tests/check/meson.build: + tests: vp9parser: Add test parsing superframe + +2020-02-28 03:06:47 +0900 Yeongjin Jeong + + * gst-libs/gst/codecparsers/gstvp9parser.c: + * gst-libs/gst/codecparsers/gstvp9parser.h: + vp9parser: Add new API for parsing superframe info + Some elements are using their own implementations for superframe parsing. + To reduce redundant code, we need to add API to the parser. + +2020-02-27 18:31:19 +0530 Guillaume Desmottes + + * gst/transcode/gsttranscodebin.c: + transcodebin: mark properties as GST_PARAM_MUTABLE_READY + They are all used in the READY to PAUSED transition so should not be + changed after. + +2020-02-27 17:16:45 +0530 Guillaume Desmottes + + * gst/transcode/gsttranscodebin.c: + transcodebin: force decoding if a filter is defined + Filter operates on raw data so don't allow decodebin to produce + encoded data if one is defined. + My use case here is keeping the video stream untouched but apply a filter + on the audio one, while keeping the same audio format. + +2020-02-27 17:03:42 +0530 Guillaume Desmottes + + * gst/transcode/gsttranscodebin.c: + transcodebin: logs when inserting, or not, a filter + It's not easy atm to figure out from the logs if a filter has actually be + inserted or not. + +2020-02-26 16:13:21 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.c: + d3d11decoder: Do not print warning message if retry count is in expected range + gst_d3d11_result() will print warning message when HRESULT != S_OK. + However, since the retry is trivial stuff, check hr == E_PENDING first + and do not warn it. + +2020-02-26 15:55:23 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.c: + * sys/d3d11/gstd3d11decoder.h: + * sys/d3d11/gstd3d11h264dec.c: + * sys/d3d11/gstd3d11h265dec.c: + * sys/d3d11/gstd3d11vp9dec.c: + d3d11decoder: Check decoder status report + ... and if h/w decoder reports error, increase error count. + +2020-02-27 18:16:27 -0500 Olivier Crête + + * gst/debugutils/gstfakevideosink.c: + fakevideosink: Align max-lateness/processing-deadline to GstVideoSink + To emulate correctly the timing video of a real sink, let's set those + properties just like a real video sink. + +2020-02-14 01:42:34 +1100 Jan Schmidt + + * ext/webrtc/nicetransport.c: + * gst-libs/gst/webrtc/dtlstransport.c: + webrtc: Use the dtlssrtenc rtp-sync property + Instead of synchronising at the ICE transport, do clock sync for the + RTP stream at the DTLS transport via the dtlssrtpenc rtp-sync + property. This avoids delaying RTCP while waiting until it is time + to output an RTP packet when rtcp-mux is enabled. + https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1212 + +2020-02-14 01:38:14 +1100 Jan Schmidt + + * ext/dtls/gstdtlssrtpenc.c: + * ext/dtls/gstdtlssrtpenc.h: + gstdtlsrtpenc: Add rtp-sync property + Add an rtp-sync property which synchronises RTP streams + to the pipeline clock before passing them to funnel for + merging with RTCP. + https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1212 + +2020-02-27 11:39:08 +0530 Nirbheek Chauhan + + * ext/dash/gstxmlhelper.c: + dash: Don't use sscanf + glib format modifiers + We do not have a way to know the format modifiers to use with string + functions provided by the system. `G_GUINT64_FORMAT` and other string + modifiers only work for glib string formatting functions. We cannot + use them for string functions provided by the stdlib. See: + https://developer.gnome.org/glib/stable/glib-Basic-Types.html#glib-Basic-Types.description + F.ex. + ``` + ../ext/dash/gstxmlhelper.c: In function 'gst_xml_helper_get_prop_unsigned_integer_64': + ../ext/dash/gstxmlhelper.c:473:40: error: unknown conversion type character 'l' in format [-Werror=format=] + if (sscanf ((gchar *) prop_string, "%" G_GUINT64_FORMAT, + ^~~ + In file included from /builds/nirbheek/cerbero/cerbero-build/dist/windows_x86/include/glib-2.0/glib/gtypes.h:32, + from /builds/nirbheek/cerbero/cerbero-build/dist/windows_x86/include/glib-2.0/glib/galloca.h:32, + from /builds/nirbheek/cerbero/cerbero-build/dist/windows_x86/include/glib-2.0/glib.h:30, + from /builds/nirbheek/cerbero/cerbero-build/dist/windows_x86/include/gstreamer-1.0/gst/gst.h:27, + from ../ext/dash/gstxmlhelper.h:26, + from ../ext/dash/gstxmlhelper.c:22: + /builds/nirbheek/cerbero/cerbero-build/dist/windows_x86/lib/glib-2.0/include/glibconfig.h:69:28: note: format string is defined here + #define G_GUINT64_FORMAT "llu" + ^ + ../ext/dash/gstxmlhelper.c:473:40: error: too many arguments for format [-Werror=format-extra-args] + if (sscanf ((gchar *) prop_string, "%" G_GUINT64_FORMAT, + ^~~ + ``` + In the process, we're also following the DASH MPD spec more closely + now, which specifies that ranges must follow RFC 2616 section 14.35.1: + https://tools.ietf.org/html/rfc2616#page-138 + +2020-02-26 21:11:40 +0200 Sebastian Dröge + + * ext/dtls/gstdtlscertificate.c: + dtls: Set a random serial number and issuer/subject in the self-signed certificates + This is also what Chrome and Firefox are doing, citing privacy concerns. + Also putting OpenWebRTC from Sweden as issuer/subject is rather + confusing. + +2020-02-26 09:08:03 +0530 Guillaume Desmottes + + * gst/transcode/gsttranscodebin.c: + transcodebin: consider 'any' as no restriction + gstreamer-rs set 'any' as default restriction which actually means 'no + restriction' so handle it as the absence of restriction. + +2020-02-26 13:11:30 +0900 Seungha Yang + + * sys/d3d11/gstd3d11window.cpp: + d3d11window: Set DXGI_PRESENT_ALLOW_TEARING only in fullscreen mode + The DXGI_PRESENT_ALLOW_TEARING flag might cause unexpected tearing + side effect. Setting it in fullscreen mode only seems to be + the correct usage as in the Microsoft's direct3d examples. + +2020-02-25 21:03:06 +0530 Guillaume Desmottes + + * gst/transcode/gsttranscodebin.c: + transcodebin: fix caps leak + encodecaps was leaked if the profile has restrictions. + +2020-02-25 14:58:23 +0100 Jan Alexander Steffens (heftig) + + * gst/rtmp2/gstrtmp2locationhandler.c: + * gst/rtmp2/gstrtmp2sink.c: + * gst/rtmp2/gstrtmp2src.c: + * gst/rtmp2/rtmp/rtmpclient.c: + rtmp2: Allow setting flash-version + In case the application has to deal with fussy servers. User agent + sniffing is so last decade. + Adds a property to set the Flash version on both the sink and the src. + The default stays the same (IIRC, Flash plugin for Linux from 2009). + +2020-02-15 04:18:07 +1100 Jan Schmidt + + * gst-libs/gst/codecparsers/gsth265parser.c: + h265parser: Skip unused bits in an SEI. + Alternative approach to 18b54f8d347030c73d8afbeaf55df57aa5acbb96 + that skips all bits in a broken SEI correctly. + +2020-02-12 17:37:46 +0100 Stéphane Cerveau + + * gst-libs/gst/codecparsers/gsth265parser.c: + Revert "h265parser: Skip unused SEI bits differently" + This reverts commit 18b54f8d347030c73d8afbeaf55df57aa5acbb96. + +2020-02-11 12:21:29 +0100 Stéphane Cerveau + + * tests/check/libs/h265parser.c: + tests: add picture timing SEI parsing + +2020-02-07 00:13:49 -0800 Dylan Yip + + * gst-libs/gst/codecparsers/gsth265parser.c: + h265parse: Fix offset by one error in pic timing SEI + Offset by one error causes a free/malloc error when parsing pic timing + SEI messages. + +2020-02-21 21:02:47 +0900 Seungha Yang + + * sys/d3d11/gstd3d11h264dec.c: + * sys/d3d11/gstd3d11h265dec.c: + * sys/d3d11/gstd3d11vp9dec.c: + d3d11decoder: Ensure the written bitstream buffer size is 128 bytes aligned + DXVA spec is saying that the size of bitstream buffer provided by hardware decoder + should be 128 bytes aligned. And also the host software decoder should + align the size of written buffer to 128 bytes. That means if the slice + (or frame in case of VP9) size is not aligned with 128 bytes, + the rest of non 128 bytes aligned memory should be zero-padded. + In addition to aligning implementation, some variables are renamed + to be more intuitive by this commit. + +2020-02-12 10:24:55 +0800 Haihao Xiang + + * sys/msdk/gstmsdkallocator_libva.c: + msdk: libva: Don't set the hint if MFX_VERSION is lower than 1025 + MFX_MEMTYPE_VIDEO_MEMORY_ENCODER_TARGET is defined since MFX_VERSION + 1025. + +2020-01-27 15:13:58 +0100 Jan Alexander Steffens (heftig) + + * gst/rtmp2/gstrtmp2sink.c: + * gst/rtmp2/gstrtmp2src.c: + rtmp2: Expose connection stats as property + Save the stats before we destroy the connection, so we can still + retrieve them afterwards. + +2020-02-14 14:53:46 +0100 Jan Alexander Steffens (heftig) + + * gst/rtmp2/rtmp/rtmpconnection.c: + * gst/rtmp2/rtmp/rtmpconnection.h: + rtmp2: Add gst_rtmp_connection_get_stats and _get_null_stats + The former uses a thread-safe way of getting statistics from the + connection without having to protect the fields with a lock. + The latter produces a zeroed statistics structure for use when no + connection exists. + +2020-02-14 12:34:44 +0100 Jan Alexander Steffens (heftig) + + * gst/rtmp2/rtmp/rtmpconnection.c: + rtmp2: Count outgoing bytes and acked bytes + For statistics. + +2020-01-27 16:30:20 +0100 Jan Alexander Steffens (heftig) + + * gst/rtmp2/gstrtmp2sink.c: + rtmp2sink: Add a property for the outgoing chunk size + +2020-02-14 12:34:19 +0100 Jan Alexander Steffens (heftig) + + * gst/rtmp2/rtmp/rtmpconnection.c: + * gst/rtmp2/rtmp/rtmpconnection.h: + rtmp2: Add gst_rtmp_connection_set_chunk_size + +2020-01-27 16:22:20 +0100 Jan Alexander Steffens (heftig) + + * gst/rtmp2/rtmp/rtmpconnection.c: + rtmp2: Handle outgoing set chunk/window size properly + Apply outgoing sizes only after writing the chunk to the peer. This is + important particularly for the set chunk size and allows exposing it + without threading issues. + +2020-01-27 14:05:31 +0100 Jan Alexander Steffens (heftig) + + * gst/rtmp2/rtmp/rtmpchunkstream.c: + * gst/rtmp2/rtmp/rtmpconnection.c: + rtmp2: Chunk messages as buffers in loop thread + Move output chunking from gst_rtmp_connection_queue_message into + gst_rtmp_connection_start_write, which effectively moves it from the + streaming thread into the loop thread. + This allows us to handle the outgoing chunk-size message (which is + generated by changing the future chunk-size property) properly, which + could come from any other thread. + +2020-02-12 16:55:15 +0100 Jan Alexander Steffens (heftig) + + * gst/rtmp2/rtmp/rtmpconnection.c: + rtmp2: Consistently use GstBuffer for RTMP chunks + +2020-02-12 16:47:30 +0100 Jan Alexander Steffens (heftig) + + * gst/rtmp2/rtmp/rtmpchunkstream.c: + * gst/rtmp2/rtmp/rtmpchunkstream.h: + rtmp2: Add gst_rtmp_chunk_stream_serialize_all + Serializes an RTMP message into a series of chunks, all in one buffer. + Similar to what gst_rtmp_connection_queue_message does to serialize + into a GByteArray. + +2020-02-12 16:43:30 +0100 Jan Alexander Steffens (heftig) + + * gst/rtmp2/rtmp/rtmputils.c: + * gst/rtmp2/rtmp/rtmputils.h: + rtmp2: Add gst_rtmp_output_stream_write_all_buffer_async + Similar to gst_rtmp_output_stream_write_all_bytes_async, but takes a + GstBuffer instead of a GBytes. It can also return the number of bytes + written, which might be lower in case of an error. + +2020-02-14 12:28:43 +0100 Jan Alexander Steffens (heftig) + + * gst/rtmp2/rtmp/rtmpchunkstream.c: + * gst/rtmp2/rtmp/rtmpchunkstream.h: + * gst/rtmp2/rtmp/rtmpclient.c: + * gst/rtmp2/rtmp/rtmpconnection.c: + * gst/rtmp2/rtmp/rtmpconnection.h: + rtmp2: Improve handling incoming set chunk/window size + Reject out-of-spec sizes and warn about suspiciously small sizes. + +2020-02-14 14:26:27 +0100 Jan Alexander Steffens (heftig) + + * gst/rtmp2/gstrtmp2sink.c: + * gst/rtmp2/gstrtmp2src.c: + rtmp2: Lock self->lock before OBJECT_LOCK + OBJECT_LOCK is used to protect property access only. self->lock is + used to access the RtmpConnection, mostly between the streaming thread + and the loop thread. + To avoid deadlocks involving these two locks, we obey a lock order: + If both self->lock and OBJECT_LOCK are needed, self->lock must be locked + first. Clarify this. + +2020-02-14 12:20:32 +0100 Jan Alexander Steffens (heftig) + + * gst/rtmp2/rtmp/rtmpchunkstream.c: + * gst/rtmp2/rtmp/rtmpmessage.h: + rtmp2: Reject oversized messages + We only have 24 bits for the size, so reject anything larger. + +2020-02-14 11:49:23 +0100 Jan Alexander Steffens (heftig) + + * gst/rtmp2/rtmp/rtmpconnection.c: + rtmp2: Count in_bytes_acked instead of in_bytes_unacked + This is nicer for statistics. + +2020-02-12 18:27:56 +0100 Jan Alexander Steffens (heftig) + + * gst/rtmp2/rtmp/rtmpconnection.c: + rtmp2: rtmpconnection: Use more appropriate size types + - guint32 for chunk size and window size + - guint64 for running counters + +2020-02-12 16:55:45 +0100 Jan Alexander Steffens (heftig) + + * gst/rtmp2/rtmp/rtmpconnection.c: + rtmp2: Add a g_return_val_if_fail + +2020-02-12 16:49:45 +0100 Jan Alexander Steffens (heftig) + + * gst/rtmp2/rtmp/rtmpconnection.c: + rtmp2: Replace explicit unref with g_main_context_invoke_full + +2020-01-27 15:27:28 +0100 Jan Alexander Steffens (heftig) + + * gst/rtmp2/rtmp/rtmpconnection.c: + rtmp2: rtmpconnection: Use GST_*_OBJECT logging + GstRtmpConnection isn't a GstObject with a name or path, but we still + get the GObject's type and address. + +2020-02-21 11:33:35 +0100 Marc Leeman + + * gst/rist/gstristsink.c: + rist: fix two minor memory leaks + +2020-02-19 17:07:35 +0100 Marc Leeman + + * gst/rtp/gstrtpsink.c: + rtpmanagerbad: fix two minor memory leaks + +2020-02-19 17:07:23 +0100 Marc Leeman + + * gst/rtp/gstrtpsink.c: + rtpmanagerbad: reduce lock in rtpsink + +2020-02-19 17:06:18 +0100 Marc Leeman + + * gst/rtp/gstrtpsrc.c: + rtpmanagerbad: documentation comment fix + +2020-02-21 03:39:14 +1100 Jan Schmidt + + * ext/webrtc/transportsendbin.c: + webrtc: Configure transportsendbin latency internally + Add latency configuration logic to transportsendbin to + isolate it from the overall pipeline latency. That means that + it configures minimum latency internally based on the + latency query, and sends a latency event upstream that + matches. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1209 + +2020-02-20 16:19:09 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.c: + d3d11decoder: Add padding space on decoder output view when it's not aligned + Most H/W decoders have required alignment and dxva is also the case. + +2020-02-15 01:23:32 +0900 Seungha Yang + + * sys/d3d11/gstd3d11_fwd.h: + * sys/d3d11/gstd3d11decoder.c: + * sys/d3d11/gstd3d11decoder.h: + * sys/d3d11/gstd3d11h264dec.c: + * sys/d3d11/gstd3d11h264dec.h: + * sys/d3d11/gstd3d11h265dec.c: + * sys/d3d11/gstd3d11h265dec.h: + * sys/d3d11/gstd3d11vp9dec.c: + * sys/d3d11/gstd3d11vp9dec.h: + * sys/d3d11/plugin.c: + d3d11decoder: Register elements per GPU device with capability check + This implementation is similar to what we've done for nvcodec plugin. + Since supported resolution, profiles, and formats are device dependent ones, + single template caps cannot represent them, so this modification + will help autoplugging and fallback. + Note that the legacy gpu list and list of resolution to query were + taken from chromium's code. + +2020-02-17 15:04:28 +0900 Seungha Yang + + * sys/d3d11/gstd3d11device.c: + d3d11device: Fix typo + s/vender/vendor + +2020-02-14 20:27:28 +0900 Seungha Yang + + * sys/d3d11/gstd3d11device.c: + d3d11device: Adjust debug level for when _new() fails + gst_d3d11_device_new might be used to enumerate device. + +2020-02-06 16:39:06 +1100 Matthew Waters + + * gst-libs/gst/vulkan/gstvkswapper.c: + vkswapper: keep a reference on the input buffer until present is finished + Otherwise, there may be a very small period of time where the buffer can + be freed while being presented. + +2020-02-14 12:52:30 +1100 Jan Schmidt + + * ext/webrtc/gstwebrtcbin.c: + webrtc: Merge ICE candidates to local descriptions + When emitting ICE candidates, also merge them to the local and + pending description so they show up in the SDP if those are + retrieved from the current-local-description and + pending-local-description properties. + https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/676 + +2020-02-16 17:11:29 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.c: + d3d11videosink: Ensure upload staging texture to fallback render texture + gst_video_frame_copy will copy input frame to stating texture + of fallback frame. Then, we need to map fallback texture with GST_MAP_D3D11 + flag to upload the staging texture to render texture. Otherwise + the render texture wouldn't be updated. + +2020-02-13 21:19:37 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.c: + d3d11decoder: Fix copying decoder view to staging + Source texture (decoder view) might be larger than destination (staging) texture. + In that case, D3D11_BOX structure should be passed to CopySubresourceRegion method + in order to specify the exact target area. + +2020-02-12 17:50:53 +0200 Sebastian Dröge + + * ext/webrtc/transportreceivebin.c: + webrtcbin: Block the source pads before dtlssrtpdec inside transportreceivebin + Otherwise dropped sticky events are not actually re-sent on the next + opportunity and we can end up with data-flow before stream-start/segment + events. + +2020-02-06 19:40:20 +0200 Sebastian Dröge + + * ext/sctp/sctpassociation.c: + sctp: Take some socket configurations from Firefox's datachannel code + - Do not send ABORTs for unexpected packets are as response to INIT + - Enable interleaving of messages of different streams + - Configure 1MB send and receive buffer for the socket + - Enable SCTP_SEND_FAILED_EVENT and SCTP_PARTIAL_DELIVERY_EVENT events + - Set SCTP_REUSE_PORT configuration + - Set SCTP_EXPLICIT_EOR and the corresponding send flag. We probably + want to split packets to a maximum size later and only set the flag + on the last packet. Firefox uses 0x4000 as maximum size here. + - Enable SCTP_ENABLE_CHANGE_ASSOC_REQ + - Disable PMTUD and set an maximum initial MTU of 1200 + +2020-02-06 18:43:35 +0200 Sebastian Dröge + + * ext/sctp/sctpassociation.c: + * ext/sctp/sctpassociation.h: + sctp: Start connection synchronously when starting the association + Calling bind() only sets up some data structures and calling connect() + only produces one packet before it returns. That packet is stored in a + queue that is asynchronously forwarded by the encoder's source pad loop, + so not much is happening there either. Especially no waiting is + happening here and no forwarding of data to other elements. + This fixes a race condition during connection setup: the connection + would immediately fail if we pass a packet from the peer to the socket + before bind() and connect() have returned. + This can't happen anymore as bind() and connect() have returned already + before both elements reach the PAUSED state, and in webrtcbin there is + an additional blocking pad probe before the decoder that does not let + any data pass through before that anyway. + +2020-02-06 16:42:01 +0200 Sebastian Dröge + + * ext/sctp/sctpassociation.c: + * ext/sctp/sctpassociation.h: + sctp: Switch back to a non-recursive mutex and don't hold it while calling any usrsctp functions + The library is thread-safe by itself and potentially calls back into our + code, not only from the same thread but also from other threads. This + can easily lead to deadlocks if we try to hold our mutex on both sides. + +2020-02-12 22:29:31 +0900 Seungha Yang + + * sys/d3d11/gstd3d11window_win32.cpp: + d3d11window: Fix for broken dirty rect drawing on Windows 7 + DXGI_SWAP_EFFECT_DISCARD cannot be used with dirty rect drawing feature + of IDXGISwapChain1::Present(). + Note that IDXGISwapChain1 interface is available on Platform Update for Windows 7 + and DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL is also the case. + +2020-02-11 13:12:33 +0900 Seungha Yang + + * sys/d3d11/gstd3d11window.cpp: + d3d11window: Fix for dxva decoder output view rendering + Use resolution specified in caps for input_rect instead of + passed width and height value. The width and height might be modified + ones by d3d11videosink, then frame resolution might be different. + +2020-02-05 21:27:23 +0900 Seungha Yang + + d3d11decoder: Refactor decoding process + * Move decoding process to handle_frame + * Remove GstVideoDecoder::parse implementation + * Clarify flush/drain/finish usage + In forward playback case, have_frame() call will be followed by + handle_frame() but reverse playback is not the case. + To ensure GstVideoCodecFrame, the decoding process should be placed inside + of handle_frame(), instead of parse(). + Since we don't support alignment=nal, the parse() implementation is not worth. + In order to fix broken reverse playback, let's remove the parse() + implementation and revisit it when adding alignment=nal support. + +2020-01-30 20:04:58 +0900 Seungha Yang + + * sys/d3d11/gstd3d11h264dec.c: + * sys/d3d11/gstd3d11h264dec.h: + * sys/d3d11/gstd3d11h265dec.c: + * sys/d3d11/gstd3d11h265dec.h: + * sys/d3d11/gstd3d11vp9dec.c: + * sys/d3d11/gstd3d11vp9dec.h: + * sys/d3d11/gsth264decoder.c: + * sys/d3d11/gsth265decoder.c: + * sys/d3d11/gstvp9decoder.c: + d3d11decoder: Move handle_frame implementation to baseclass + ... and remove unused start, stop method from subclass. + Current implementation does not require subclass specific behavior + for the handle_frame() method. + +2020-02-05 18:20:57 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.c: + d3d11videosink: Remove max size condition from pool + Actually our buffer pool size and the number of backbuffer are + independent. In case of reverse playback, upstream might request + a lot of buffers (up to GOP size). + +2020-02-12 00:00:51 +0530 Nirbheek Chauhan + + * sys/nvcodec/gstnvdec.c: + * sys/nvcodec/gstnvh264enc.c: + * sys/nvcodec/gstnvh265enc.c: + nvcodec: Mark class data as may-be-leaked to quiet the leaks tracer + The class data with the caps in it will be leaked if the element is + registered but never instantiated. There is no way around this. Mark + the caps as such so that the leaks tracer does not warn about it. + This is the same as pad template caps getting leaked, which are also + marked as may-be-leaked. These objects are initialized exactly once, + and are 'global' data. + +2020-02-08 12:05:03 +0000 Philippe Normand + + * ext/wpe/WPEThreadedView.cpp: + * ext/wpe/WPEThreadedView.h: + * ext/wpe/gstwpesrc.cpp: + * ext/wpe/meson.build: + wpe: Add software rendering support support + Starting from WPEBackend-FDO 1.6.x, software rendering support is available. + This features allows wpesrc to be used on machines without GPU, and/or for + testing purpose. To enable it, set the `LIBGL_ALWAYS_SOFTWARE=true` environment + variable and make sure `video/x-raw, format=BGRA` caps are negotiated by the + wpesrc element. + +2020-02-11 12:15:09 +0100 Jan Alexander Steffens (heftig) + + * ext/fluidsynth/gstfluiddec.c: + fluiddec: Move logging init into plugin_init + This is a nicer place to keep it. We also initialize it before touching + the drivers. + https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/merge_requests/1026 + +2020-02-05 11:17:33 +0100 Jan Alexander Steffens (heftig) + + * ext/fluidsynth/gstfluiddec.c: + fluiddec: Keep fluidsynth from probing audio drivers + It might cause problems and we don't need the drivers anyway. This also + avoids a bunch of stderr spam from the drivers. + https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/merge_requests/1026 + +2020-02-05 11:17:32 +0100 Jan Alexander Steffens (heftig) + + * ext/fluidsynth/gstfluiddec.c: + fluiddec: Avoid deprecated fluid_synth_set_sample_rate + This function is used to change the rate at runtime, which has issues: + https://github.com/FluidSynth/fluidsynth/issues/585 + Use the settings key instead (which already defaults to 44100, but I did + test other rates). + https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/merge_requests/1026 + +2020-01-22 16:20:28 +0200 Vivia Nikolaidou + + * gst/mpegtsdemux/mpegtsparse.c: + * gst/mpegtsdemux/mpegtsparse.h: + tsparse: Add split-on-rai property + If set, buffers sized smaller than the alignment will be sent so that + RAI packets are at the start of a new buffer. + Fixes: #1190 + +2020-02-06 14:29:13 +0200 Sebastian Dröge + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/transportreceivebin.c: + * ext/webrtc/transportsendbin.c: + webrtc: In all blocking pad probes except for sink pads also handle serialized events + Otherwise it can happen that e.g. the stream-start event is tried to be + sent as part of pushing the first buffer. Downstream might not be in + PAUSED/PLAYING yet, so the event is rejected with GST_FLOW_FLUSHING and + because it's an event would not cause the blocking pad probe to trigger + first. This would then return GST_FLOW_FLUSHING for the buffer and shut + down all of upstream. + To solve this we return GST_PAD_PROBE_DROP for all events. In case of + sticky events they would be resent again later once we unblocked after + blocking on the buffer and everything works fine. + Don't handle events specifically in sink pad blocking pad probes as here + downstream is not linked yet and we are actually waiting for the + following CAPS event before unblocking can happen. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1172 + +2020-02-06 14:27:42 +0200 Sebastian Dröge + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/sctptransport.h: + webrtcbin: Add a blocking pad probe for the receivebin -> sctpdec connection + Without this it might happen that received data from the DTLS transport + is already passed to sctpdec before its state was set to PLAYING. This + would cause the data to be dropped, GST_FLOW_FLUSHING to be returned and + the whole DTLS transport to shut down. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1172 + among other things. + +2020-02-06 14:24:41 +0200 Sebastian Dröge + + * ext/webrtc/transportreceivebin.c: + * ext/webrtc/transportreceivebin.h: + webrtcbin/transportreceivebin: Use actual pad blocks instead of an additional GCond for blocking pads + Using a GCond can easily lead to deadlocks and only duplicates the + waiting code from gstpad.c in the best case. + In this case it actually could lead to a deadlock if both RTP and RTCP + were waiting. Only one of them would be woken up because g_cond_signal() + was used instead of g_cond_broadcast(). + +2020-02-06 14:22:17 +0200 Sebastian Dröge + + * ext/webrtc/transportsendbin.c: + webrtc/transportsendbin: Clean up pad probe removal + We already have a helper function for this so just use it instead of + duplicating it. + +2020-01-15 16:02:11 +0800 Haihao Xiang + + * sys/msdk/gstmsdk.c: + * sys/msdk/gstmsdkvp9enc.c: + * sys/msdk/gstmsdkvp9enc.h: + * sys/msdk/meson.build: + msdkvp9enc: output raw vp9 stream instead of IVF stream + video/x-vp9 is required in the src pad, however the output includes a + IVF header, which makes the pipeline below doesn't work + gst-launch-1.0 videotestsrc ! msdkvp9enc ! msdkvp9dec ! fakesink + Since mfx 1.26, the VP9 encoder supports bitstream without IVF header, + so in this patch, the mfx version is checked and msdkvp9enc is enabled + only if mfx 1.26+ is available + +2020-01-31 02:01:12 +1100 Jan Schmidt + + * sys/androidmedia/gstamcvideoenc.c: + * sys/androidmedia/gstamcvideoenc.h: + * sys/androidmedia/gstjniutils.c: + * sys/androidmedia/gstjniutils.h: + androidmedia: Support float i-frame-interval + Android 25 added support for i-frame-interval to be a floating + point value. Store the property as a float and use the newer + version when it's available. + +2020-01-31 01:33:51 +1100 Jan Schmidt + + * sys/androidmedia/gstamc-codec.h: + * sys/androidmedia/gstamcvideoenc.c: + * sys/androidmedia/gstamcvideoenc.h: + * sys/androidmedia/jni/gstamc-codec-jni.c: + * sys/androidmedia/magicleap/gstamc-codec-ml.c: + androidmedia: Allow dynamic bitrate changes on Android >= 19 + Android 19 added an API for dynamically changing the bitrate in a running + codec. + Also make it so that even when not update-able at runtime, parameters will at least + be stored so that they take effect the next the codec is restarted. + +2020-01-31 01:21:34 +1100 Jan Schmidt + + * sys/androidmedia/gstamc-codec.h: + * sys/androidmedia/gstamcvideoenc.c: + * sys/androidmedia/jni/gstamc-codec-jni.c: + * sys/androidmedia/magicleap/gstamc-codec-ml.c: + androidmedia: Handle force-keyunit requests + Use API from Android 19 to request a keyframe from the MediaCodec + when indicated by the base class. + +2020-02-05 21:13:49 +1100 Jan Schmidt + + * sys/androidmedia/jni/gstamc-codec-jni.c: + androidmedia: Permit Codec surface to be NULL + The AMC encoder wrapper doesn't support input surfaces yet, + and passes NULL when configuring the underlying codec. + This was broken in commit 7fcf3e + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1102 + +2020-01-24 10:58:32 -0800 Ederson de Souza + + * ext/avtp/gstavtpaafdepay.c: + avtp: Build with clang + Minor non-conformity on AVTP code made it not compile with clang. + +2020-01-24 15:47:56 -0800 Ederson de Souza + + * ext/avtp/gstavtpaafpay.c: + * ext/avtp/gstavtpcvfdepay.c: + * ext/avtp/gstavtpcvfpay.c: + * tests/check/elements/avtpaafdepay.c: + * tests/check/elements/avtpaafpay.c: + * tests/check/elements/avtpcvfdepay.c: + * tests/check/elements/avtpcvfpay.c: + avtp: Plug several leaks + After finally running tests with valgrind enabled, some leaks were found + - both on code and on tests themselves. This patch plugs them all! + +2020-02-07 13:24:53 +0000 Ludvig Rappe + + * ext/curl/gstcurlhttpsink.c: + gstcurlhttpsink: Update HTTP header for curl 7.66 + Change how content-length is set for HTTP POST headers, letting curl set + the header (given the content-length) instead of manually writing it. + This enables curl to know the content-length of the data. + In curl 7.66, if curl does not know the content-length (e.g. when + manually writing the header) curl will use Transfer-Encoding: chunked, + which might not be desired. + +2020-01-20 15:22:26 +0530 Nirbheek Chauhan + + * sys/nvcodec/gstnvdec.c: + nvcodec: Fix crash in decoder on 32-bit Windows + Same fix as 1a7ea45ffde40a4bea63562a2cc9892396d9f7eb, but I didn't + test the decoder so I missed that the function pointers here weren't + using the correct calling convention too. + +2020-02-05 16:12:28 +0000 Tim-Philipp Müller + + * ext/ladspa/gstladspautils.c: + ladspa: only multiply bounded rate properties by sample rate + We don't want to accidentally multiply G_MAXFLOAT or -GMAXFLOAT + with the sample rate. + +2020-02-05 16:03:06 +0000 Tim-Philipp Müller + + * ext/ladspa/gstladspautils.c: + ladspa: fix unbounded integer properties + Use a double instead of a plain float for intermediary + property values, so we have enough bits to store INT_MAX + and it doesn't get rounded and wrapped to -1 when cast + back to a 32-bit integer. + Fixes criticals like + g_param_spec_int: assertion 'default_value >= minimum && default_value <= maximum' failed + when loading LADSPA plugins from the Linux Studio Plugins + Project (http://lsp-plug.in) in GStreamer. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1194 + +2019-10-04 11:39:10 -0700 Andre Guedes + + * ext/avtp/gstavtp.c: + * ext/avtp/gstavtpsink.c: + * ext/avtp/gstavtpsink.h: + * ext/avtp/meson.build: + avtpsink: Implement synchronization mechanism + The avtpsink element is expected to transmit AVTPDUs at specific times, + according to GstBuffer timestamps. Currently, the transmission time is + controlled in software via the rendering synchronization mechanism + provided by GstBaseSink class. However, that mechanism may not cope with + some AVB use-cases such as Class A streams, where AVTPDUs are expected + to be transmitted at every 125 us. Thus, this patch introduces avtpsink + own mechanism which leverages the socket transmission scheduling + infrastructure introduced in Linux kernel 4.19. When supported by the + NIC, the transmission scheduling is offloaded to the hardware, improving + transmission time accuracy considerably. + To illustrate that, a before-after experiment was carried out. The + experimental setup consisted in 2 PCs with Intel i210 card connected + back-to-back running an up-to-date Archlinux with kernel 5.3.1. In one + host gst-launch-1.0 was used to generate a 2-minute Class A stream while + the other host captured the packets. The metric under evaluation is the + transmission interval and it is measured by checking the 'time_delta' + information from ethernet frames captured at the receiving side. + The table below shows the outcome for a 48 kHz, 16-bit sample, stereo + audio stream. The unit is nanoseconds. + | Mean | Stdev | Min | Max | Range | + -------+--------+---------+---------+---------+---------+ + Before | 125000 │ 2401 │ 110056 │ 288432 │ 178376 | + After | 125000 │ 18 │ 124943 │ 125055 │ 112 | + Before this patch, the transmission interval mean is equal to the + optimal value (Class A stream -> 125 us interval), and it is kept the + same after the patch. The dispersion measurements, however, had + improved considerably, meaning the system is now consistently + transmitting AVTPDUs at the correct time. + Finally, the socket transmission scheduling infrastructure requires the + system clock to be synchronized with PTP clock so this patches modifies + the AVTP plugin documentation to cover how to achieve that. + +2019-10-04 11:17:22 -0700 Andre Guedes + + * ext/avtp/gstavtpsink.c: + avtpsink: Prepare code to new synchronization mechanism + This patch refactors gst_avtp_sink_start() by moving all socket + initialization code to its own function. This change prepares the code + to the next patch which will introduce avtpsink's own rendering + synchronization mechanism. + +2019-10-04 11:11:23 -0700 Andre Guedes + + * ext/avtp/gstavtpsink.c: + avtpsink: Remove SOCK_NONBLOCK from avtpsink + Current avtpsink code opens the AF_PACKET socket with SOCK_NONBLOCK + option. However, we actually want sendto() to block in case there isn't + available space in socket buffer. + +2019-10-04 10:56:30 -0700 Andre Guedes + + * ext/avtp/gstavtpsink.c: + * ext/avtp/gstavtpsrc.c: + avtp: Refactor if_index code + This patch refactors both avtpsink and avtpsrc code so we use the + if_nametoindex() helper instead of building a request and issuing an + ioctl to get the if_index. + +2020-02-05 22:12:15 +0900 Seungha Yang + + * sys/d3d11/gstd3d11window.cpp: + d3d11window: Clear cached buffer per new caps + d3d11window holds one buffer to redraw client area per resize event. + When the input format is being changed, this buffer should be cleared + to avoid mismatch beween newly configured shader/videoprocessor and + the format of previously cached buffer. + +2020-02-04 11:31:43 +0200 Sebastian Dröge + + * sys/nvcodec/gstnvdec.c: + nvdec: Don't leak template caps when registering elements with old NVIDIA driver + +2020-02-03 22:23:21 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.c: + * sys/d3d11/gstd3d11decoder.h: + * sys/d3d11/gstd3d11h264dec.c: + * sys/d3d11/gstd3d11h265dec.c: + * sys/d3d11/gstd3d11vp9dec.c: + d3d11decoder: Use consistent resolution between output caps and video meta + h264/h265 decoded buffer might have crop area then we need to + adjust video meta based on the padding space + +2020-02-03 21:55:55 +0900 Seungha Yang + + * sys/d3d11/gstd3d11bufferpool.c: + * sys/d3d11/gstd3d11memory.c: + * sys/d3d11/gstd3d11memory.h: + d3d11memory: Add a method to specify padding space + +2020-02-01 17:38:29 +0900 Seungha Yang + + * sys/d3d11/gstd3d11h264dec.c: + * sys/d3d11/gstd3d11h265dec.c: + * sys/d3d11/gstd3d11vp9dec.c: + d3d11decoder: Add support for zero-copy playback + When downstream support d3d11 memory with forward playback case, + expose decoder output view memory objects without copying. + +2020-02-04 01:00:00 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.c: + d3d11decoder: Create decoder output view whenever it's required + Whatever the reason, buffer in pool might be freed then we need to + configure decoder output views again. + +2020-02-04 00:55:24 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.c: + d3d11decoder: Need to zero initilized for g_once + A vairable to be used for g_once, it should be zero initialized + +2020-01-30 18:11:52 +0900 Seungha Yang + + * sys/d3d11/gstd3d11_fwd.h: + * sys/d3d11/gstd3d11bufferpool.c: + * sys/d3d11/gstd3d11memory.c: + * sys/d3d11/gstd3d11memory.h: + d3d11allocator: Work as if buffer pool when running on texture array mode + Because the size of texture array cannot be updated dynamically, + allocator should block the allocation request. This cannot be + done at buffer pool side if this d3d11 memory is shared among + multiple buffer objects. Note that setting NO_SHARE flag to + d3d11 memory is very inefficient. It would cause most likey + copy of the d3d11 texture. + +2020-01-31 00:17:13 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.c: + d3d11videosink: Fix fallback buffer copy + Since we don't use dynamic texture now, cpu access to the fallback + texture should not happen. + +2020-01-30 21:12:31 +0900 Seungha Yang + + * sys/d3d11/gstd3d11window.cpp: + * sys/d3d11/gstd3d11window.h: + d3d11window: Don't create swapchain again per caps change + Creating swapchain is relatively heavy operation. If output dxgi format + is not being chagned, we don't need to destroy and create swachain again. + +2020-01-10 21:45:43 +0900 Seungha Yang + + * sys/d3d11/gstd3d11window.cpp: + * sys/d3d11/gstd3d11window.h: + * sys/d3d11/gstd3d11window_corewindow.cpp: + * sys/d3d11/gstd3d11window_swapchainpanel.cpp: + * sys/d3d11/gstd3d11window_win32.cpp: + d3d11window: Invoke initial resize method from baseclass + ... instead of calling from subclass in order for baseclass to handle + more things between swapchain creation and resource creation. + +2020-01-29 21:10:00 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.c: + * sys/d3d11/gstd3d11videosink.h: + * sys/d3d11/gstd3d11window.cpp: + * sys/d3d11/gstd3d11window.h: + d3d11videosink: Use ID3D11VideoProcessor interface + ...for color space conversion if available + ID3D11VideoProcessor is equivalent to DXVA-HD video processor + which might use specialized blocks for video processing + instead of general GPU resource. In addition to that feature, + we need to use this API for color space conversion of DXVA2 decoder + output memory, because any d3d11 texture arrays that were + created with D3D11_BIND_DECODER cannot be used for shader resource. + This is prework for d3d11decoder zero-copy rendering and also + for conditional HDR tone-map support. + Note that some Intel platform is known to support tone-mapping + at the driver level using this API on Windows 10. + +2020-01-10 23:54:43 +0900 Seungha Yang + + * sys/d3d11/gstd3d11_fwd.h: + * sys/d3d11/gstd3d11videoprocessor.c: + * sys/d3d11/gstd3d11videoprocessor.h: + * sys/d3d11/meson.build: + * sys/d3d11/plugin.c: + d3d11: Add video processor object + ID3D11VideoProcessor interface provides various image conversion + methods. Note that it's analogous to VAAPI VPP. + +2020-01-29 17:29:04 +0900 Seungha Yang + + * sys/d3d11/gstd3d11format.c: + * sys/d3d11/gstd3d11format.h: + * sys/d3d11/gstd3d11window.cpp: + * sys/d3d11/gstd3d11window.h: + d3d11format: Add util methods for mapping DXGI color space with ours + Move color space mapping and hdr10 metadata conversion methods to + d3d11format in order to reuse the code. + +2020-02-01 19:18:44 +0100 Stéphane Cerveau + + * ext/fdkaac/gstfdkaacdec.c: + fdkaacdec: add support for mpegversion=2 + Fix for #1199 + +2020-01-29 18:55:55 +0900 Seungha Yang + + * sys/nvcodec/gstnvenc.c: + nvenc: Query maximum supported API version + We've been using NvEncodeAPICreateInstance method to find the supported API + version, but that seems to be insufficient since there is a case + where plugin failed in opening encoding session even if NvEncodeAPICreateInstance + succeeded. Asking driver about the version would be the most certain way. + +2020-01-31 17:25:08 -0800 Thiago Santos + + * gst/sdp/gstsdpdemux.c: + sdpdemux: check if connections are available on media entry before get + Otherwise we trigger an assert. + +2020-02-01 01:37:08 +0100 Mathieu Duponchelle + + * ext/webrtc/transportreceivebin.c: + webrtcbin: fix blocking of receive bin + The receive bin should block buffers from reaching dtlsdec before + the dtls connection has started. + While there was code to block its sinkpads until receive_state + was different from BLOCK, nothing was ever setting it to BLOCK + in the first place. This commit corrects this by setting the + initial state to BLOCK, directly in the constructor. + In addition, now that blocking is effective, we want to only + block buffers and buffer lists, as that's what might trigger + errors, we want to still let events and queries go through, + not doing so causes immediate deadlocks when linking the + bin. + +2020-01-31 09:47:59 -0500 Nicolas Dufresne + + * sys/kms/gstkmssink.c: + kmssink: Fix crash with force-modesetting=1 + This is a master regression, we would allocate a bo without having + created the allocator yet. As of now, we lazily create the allocator. + +2020-01-31 08:33:38 +0200 Sebastian Dröge + + * ext/sctp/sctpassociation.c: + sctpassociation: Add missing return to prevent double unlock + +2020-01-30 17:29:40 +0200 Sebastian Dröge + + * ext/sctp/gstsctpenc.c: + * ext/sctp/sctpassociation.c: + * ext/sctp/sctpassociation.h: + sctpenc: Report errors when sending out data and the association is in error or disconnected state + +2020-01-30 17:21:49 +0200 Sebastian Dröge + + * ext/sctp/gstsctpenc.c: + * ext/sctp/sctpassociation.c: + sctp: Clean up association state handling and go into error/disconnected state in more circumstances + +2020-01-30 16:28:25 +0200 Sebastian Dröge + + * ext/sctp/sctpassociation.c: + sctpassociation: Use GStreamer logging system instead of g_warning() and g_log() + +2020-01-30 16:13:19 +0200 Sebastian Dröge + + * ext/sctp/gstsctpdec.c: + * ext/sctp/gstsctpenc.c: + sctp: Add more logging to the encoder/decoder elements on data processing + And convert g_warning()s into normal log output instead. + +2020-01-30 16:11:57 +0200 Sebastian Dröge + + * ext/sctp/gstsctpenc.c: + * ext/sctp/sctpassociation.c: + sctpenc: Correctly log/handle errors and handle short writes + +2020-01-30 16:09:40 +0200 Sebastian Dröge + + * ext/sctp/gstsctpdec.c: + * ext/sctp/sctpassociation.c: + * ext/sctp/sctpassociation.h: + sctp: Constify buffers in callbacks and functions + And free data with the correct free() function in the receive callback + by passing it to gst_buffer_new_wrapped_full() instead of + gst_buffer_new_wrapped(). + +2020-01-30 16:06:09 +0200 Sebastian Dröge + + * ext/sctp/gstsctpdec.c: + * ext/sctp/gstsctpenc.c: + * ext/sctp/sctpassociation.c: + * ext/sctp/sctpassociation.h: + sctp: Make receive/packetout callbacks thread-safe + +2020-01-30 16:00:33 +0200 Sebastian Dröge + + * ext/sctp/gstsctpdec.c: + * ext/sctp/gstsctpenc.c: + sctp: Add logging and missing cleanup on errors when creating pads + +2020-01-30 15:59:12 +0200 Sebastian Dröge + + * ext/sctp/gstsctpenc.c: + sctpenc: Use g_signal_emit() instead of g_signal_emit_by_name() + We have all the required information around so make use of it. + +2020-01-30 15:58:30 +0200 Sebastian Dröge + + * ext/sctp/gstsctpenc.c: + * ext/sctp/gstsctpenc.h: + sctpenc: Propagate downstream flow errors upstream + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1180 + +2020-01-30 15:56:36 +0200 Sebastian Dröge + + * ext/sctp/gstsctpdec.c: + * ext/sctp/gstsctpdec.h: + sctpdec: Use a flow combiner for the source pad flow returns and propagate errors upstream + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1180 + +2020-01-17 17:44:34 +0200 Vivia Nikolaidou + + * gst/mpegtsdemux/mpegtsparse.c: + mpegtsparse: Moved dispose function into finalize + dispose can be called several times and would double-free the flow + combiner in that case. + +2020-01-22 13:55:58 +0200 Vivia Nikolaidou + + * gst/mpegtsdemux/mpegtsparse.c: + * gst/mpegtsdemux/mpegtsparse.h: + mpegtsparse: Added alignment property + alignment works like in mpegtsmux, joining several MpegTS packets into + one buffer. Default value of 0 joins as many as possible for each + incoming buffer, to optimise CPU usage. + +2020-01-10 18:00:07 +0200 Vivia Nikolaidou + + * gst/mpegtsdemux/mpegtsparse.c: + mpegtsparse: Set delta unit flag on non-random-access buffers + If they don't have the random access flag set, they cannot be decoded + independently. + +2020-01-10 17:58:34 +0200 Vivia Nikolaidou + + * gst/mpegtsdemux/mpegtsparse.c: + mpegtsparse: Packetize output on default srcpad + Align buffer boundaries with mpeg-ts packets, instead of keeping + whatever packetization we have from the source (network, file reading). + +2020-01-10 17:54:54 +0200 Vivia Nikolaidou + + * gst/mpegtsdemux/mpegtsparse.c: + mpegtsparse: Factor common code into mpegts_packet_to_buffer + The same code was used twice for turning an MpegTSPacketizerPacket into + a GstBuffer. + +2020-01-10 17:52:58 +0200 Vivia Nikolaidou + + * gst/mpegtsdemux/mpegtspacketizer.h: + mpegtspacketizer: Fix typo in flag name + +2020-01-29 14:10:06 +0900 Seungha Yang + + * sys/msdk/gstmsdkdec.c: + msdkdec: Fix GstMsdkContext leak + +2020-01-29 14:02:09 +0900 Seungha Yang + + * sys/msdk/gstmsdkdec.c: + * sys/msdk/gstmsdkenc.c: + * sys/msdk/gstmsdkvpp.c: + msdk: Clear reference counted object in dispose() method + Follow GObject's memory management model + +2020-01-28 13:06:59 +0100 Guillermo Rodríguez + + * ext/wayland/wlwindow.c: + waylandsink: Clear window when pipeline is stopped + When a pipeline is stopped (actually when the waylandsink element + state changes from PAUSED to READY) the video surface is cleared, but + the opaque black surface behind is not. Fix this by actually clearing + both surfaces. + +2020-01-09 22:23:17 +0800 Haihao Xiang + + * sys/msdk/gstmsdkcontext.c: + msdk: use cached response for DMABuf when the frame size is same + User is seeing corrupted display when running `videotestsrc ! + video/x-raw,format=NV12,width=xxx,height=xxx ! msdkh265enc ! msdkh265dec + ! glimagesink` with changed frame size, e.g. from 1920x1080 to 1920x240 + The root cause is a same dmabuf fd is used for frames with + different size, which causes some unexpected result. This patch requires + cached response is used for frames with same size only for DMABuf, so a + dmabuf fd can't be used for frames with different size any more. + +2020-01-25 18:39:52 +0900 Seungha Yang + + * sys/d3d11/gstd3d11window.cpp: + * sys/d3d11/gstd3d11window_win32.cpp: + d3d11window_win32: Let DXGI choose client area + Don't specify the resolution of backbuffer. Then dxgi will let us know the + actual client area. When upstream resolution is chagned, updating the size + of backbuffer without the consideration for client size would cause mismatch + between them. + +2020-01-23 11:01:33 -0500 Nicolas Dufresne + + * sys/nvcodec/gstnvdec.c: + nvdec: Do not map GStreamer discont to CUVid discont + Setting the CUVID_PKT_DISCONTINUITY implies clearing any past information + about the stream in the decoder. The GStreamer discont flag is used for + discontinuity caused by a seek, for first buffer and if a buffer was + dropped. In the first two cases, the parsers and demuxers should ensure we + start from a synchronization point, so it's unlikely that delta will be + matched against the wrong state. + For packet lost, the discontinuity flag will prevent the decoder from doing + any concealment, with a result that ca be much worst visually, or freeze the + playback until an IDR is met. It's better to let the decoder handle that for + us. + Removing this flag, also workaround a but in NVidia parser that makes it + ignore our ENDOFFRAME flag and increase the latency by one frame. + +2020-01-22 10:26:02 -0500 Nicolas Dufresne + + * sys/nvcodec/gstnvdec.c: + * sys/nvcodec/gstnvdec.h: + nvdec: Tell the parser we have complete pictures + This sets the CUVID_PKT_ENDOFPICTURE flag in order to inform the decoder that + we have a complete picture. This should remove one frame latency otherwise + introduce by NVidia parser. + +2020-01-23 18:08:53 +0200 Sebastian Dröge + + * ext/closedcaption/gstccconverter.c: + * tests/check/elements/ccconverter.c: + ccconverter: Fill remainder of the cc_data in CDP packets with empty packets + Instead of filling it completely with zeroes. Filling with zeroes is + considered invalid by various CC implementations. + +2020-01-21 21:25:28 +0900 Seungha Yang + + * sys/d3d11/gstd3d11window_corewindow.cpp: + d3d11window_corewindow: Always call methods of CoreWindow interface from UI thread + Like swapchain panel implementation, most methods of CoreWindow + should be called from UI thread. + +2020-01-21 16:50:22 +0200 Sebastian Dröge + + * gst/mpegdemux/gstmpegdemux.c: + mpegdemux: Update the last_ts correctly if we have no DTS + If we have no DTS but a PTS then this means both are the same, and we + should update the last_ts with the PTS. Only if both are unknown then we + don't know the current position and should not update it at all. + Previously we would always update the last_ts to GST_CLOCK_TIME_NONE if + the DTS is unknown, which caused the position to jump around and to + cause spurious gap events to be sent. + +2020-01-21 15:14:08 +0800 Haihao Xiang + + * sys/msdk/gstmsdkenc.c: + * sys/msdk/gstmsdkvpp.c: + msdk: Fix compiler warning + This patch fixed compiler warning below: + [1/4] Compiling C object 'sys/msdk/dc44ea0@@gstmsdk@sha/gstmsdkvpp.c.o'. + ../../gst-plugins-bad/sys/msdk/gstmsdkvpp.c: In function + ‘gst_msdkvpp_context_prepare’: + ../../gst-plugins-bad/sys/msdk/gstmsdkvpp.c:214:7: warning: suggest + parentheses around operand of ‘!’ or change ‘&’ to ‘&&’ or ‘!’ to ‘~’ + [-Wparentheses] + +2020-01-21 12:14:49 +0100 Mathieu Duponchelle + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: connect rtp funnel after updating ptmaps + We need the streams' pt maps updated before requesting pads + on rtpbin, because this is what will trigger the requesting + of FEC encoders, and our handler for this request looks for + the payload types in the relevant stream's pt map. + Fixes #1187 + +2020-01-20 16:35:50 +0200 Sebastian Dröge + + * gst/mpegdemux/gstmpegdemux.c: + mpegpsdemux: Send gap events for late streams whenever updating the SCR + Instead of doing it on each packet and doing it based on the distance to + the previous SCR instead of based on the DTS. + Previously we would send gap events for audio all the time if the SCR + distance was 400ms because the threshold for audio is 300ms and by only + ever updating the position when the SCR updates we would always be 100ms + above the threshold and send needless gap events. + This fixes audio glitches on various files caused by gap events. + +2020-01-16 13:00:33 +0900 Seungha Yang + + * sys/nvcodec/gstnvbaseenc.c: + nvenc: Do not access to broken encode session + If an encode session failed in initializing, the encode + session would be broken and the next nvenc API will cause crash. + Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1179 + +2020-01-17 11:07:47 +0530 Nirbheek Chauhan + + * sys/msdk/gstmsdkcontextutil.c: + * sys/msdk/gstmsdkdec.c: + * sys/msdk/gstmsdkdec.h: + * sys/msdk/gstmsdkenc.c: + * sys/msdk/gstmsdkenc.h: + * sys/msdk/gstmsdkvpp.c: + * sys/msdk/gstmsdkvpp.h: + msdk: Fix increasing memory usage in dynamic pipelines + Our context is non-persistent, and we propagate it throughout the + pipeline. This means that if we try to reuse any gstmsdk element by + removing it from the pipeline and then re-adding it, we'll clone the + mfxSession and create a new gstmsdk context as a child of the old one + inside `gst_msdk_context_new_with_parent()`. + Normally this only allocates a few KB inside the driver, but on + Windows it seems to allocate tens of MBs which leads to linearly + increasing memory usage for each PLAYING->NULL->PLAYING state cycle + for the process. The contexts will only be freed when the pipeline + itself goes to `NULL`, which would defeat the purpose of dynamic + pipelines. + Essentially, we need to optimize the case in which the element is + removed from the pipeline and re-added and the same context is re-set + on it. To detect that case, we set the context on `old_context`, and + compare it to the new one when preparing the context. If they're the + same, we don't need to do anything. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/946 + +2020-01-17 10:43:11 +0530 Nirbheek Chauhan + + * sys/msdk/gstmsdkcontextutil.c: + * sys/msdk/gstmsdkcontextutil.h: + * sys/msdk/gstmsdkdec.c: + * sys/msdk/gstmsdkenc.c: + * sys/msdk/gstmsdkvpp.c: + msdk: Reorganize context preparation code + Split it out into a separate function with early exits to make the + flow clearer, and document what the function is doing clearly. + No functional changes. + +2020-01-17 10:13:49 +0530 Nirbheek Chauhan + + * sys/msdk/gstmsdkenc.c: + * sys/msdk/gstmsdkvpp.c: + msdk: Fix warning about unused variable on Windows + +2020-01-17 13:45:35 +0530 Nirbheek Chauhan + + * sys/msdk/gstmsdkdec.c: + * sys/msdk/gstmsdkenc.c: + * sys/msdk/gstmsdkvpp.c: + msdk: Use gst_clear_object() + `gst_object_replace()` is not supposed to be used for unreffing and + NULLing objects. + +2020-01-20 16:27:30 +0530 Nirbheek Chauhan + + * sys/nvcodec/gstnvenc.c: + nvcodec: Print debug info when initializing nvenc + We weren't printing the return value. + +2020-01-20 15:22:26 +0530 Nirbheek Chauhan + + * sys/nvcodec/gstcudaloader.c: + * sys/nvcodec/gstcudaloader.h: + * sys/nvcodec/gstcuvidloader.c: + * sys/nvcodec/gstcuvidloader.h: + * sys/nvcodec/stub/cuda.h: + nvcodec: Fix crash on 32-bit Windows + We weren't using the correct calling convention when calling CUDA and + CUVID APIs. `CUDAAPI` is `__stdcall` on Windows. This was working fine + on x64 because `__stdcall` is ignored and there's no special calling + convention. However, on x86, we need to use `__stdcall`. + +2020-01-20 15:10:51 +0530 Nirbheek Chauhan + + * sys/nvcodec/gstcudaloader.h: + * sys/nvcodec/stub/cuda.h: + nvcodec: cuda.h only needs glib.h, not gst.h + Just a nitpick. Also, force the compiler to use our stub header + instead of searching for it in the include paths. + +2020-01-17 11:19:53 +0200 Sebastian Dröge + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Start datachannel SCTP elements only after the DTLS connection is established + Otherwise we would start sending data to the DTLS connection before, and + the DTLS elements consider this an error. + Also RFC 8261 mentions: + o A DTLS connection MUST be established before an SCTP association can + be set up. + +2020-01-12 17:04:22 +0200 Sebastian Dröge + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Add handling of unspecified peer-connection-state situation + For us it can happen that the DTLS transports are still in the process + of connecting while the ICE transport is already completed. This + situation is not specified in the spec but conceptually that means it is + still in the process of connecting. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/758 + +2020-01-12 16:32:20 +0200 Sebastian Dröge + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Return the old state if we ended up being in an unspecified situation + Previously we would've returned NEW, which is usually more wrong. + +2020-01-09 19:21:08 +0200 Sebastian Dröge + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Fix transitions for the peer connection state + They're now mapping exactly to what + https://www.w3.org/TR/webrtc/#rtcpeerconnectionstate-enum + actually specifies. + Related to https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/758 + +2020-01-09 18:55:56 +0200 Sebastian Dröge + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Fix transitions for the connection state + They're now mapping exactly to what + https://www.w3.org/TR/webrtc/#dom-rtciceconnectionstate + actually specifies. + Related to https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/758 + +2020-01-12 16:25:01 +0200 Sebastian Dröge + + * gst-libs/gst/webrtc/dtlstransport.c: + webrtc/dtlstransport: Proxy DTLS connection state from the DTLS elements to the transport + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/758 + +2020-01-12 16:18:09 +0200 Sebastian Dröge + + * ext/dtls/gstdtlsconnection.c: + * ext/dtls/gstdtlsconnection.h: + * ext/dtls/gstdtlsdec.c: + * ext/dtls/gstdtlsenc.c: + * ext/dtls/gstdtlssrtpdec.c: + * ext/dtls/gstdtlssrtpenc.c: + dtls: Keep track of the connection state and signal it through all the layers + This allows the application to keep track of the underlying DTLS + connection state and act accordingly. + +2020-01-12 13:56:00 +0200 Sebastian Dröge + + * ext/dtls/gstdtlsconnection.c: + * ext/dtls/gstdtlsconnection.h: + * ext/dtls/gstdtlsdec.c: + * ext/dtls/gstdtlsenc.c: + dtls: Handle errors/close_notify at all steps and propagate through the layers properly + Previously we simply logged errors but never reported them to elements + or even to the user. Fatal errors are now properly reported. + Additionally proper connection closing is implemented based on EOS: + - dtlsenc: EOS will cause close_notify to be sent to the peer and only + if the peer also sent back close_notify we will forward the + EOS event. + - dtlsdec: EOS will be forwarded normally, this only means that the + unterlying transport was closed. On receiving a DTLS packet + containing close_notify, return EOS and send EOS downstream. + +2020-01-12 12:48:55 +0200 Sebastian Dröge + + * ext/dtls/gstdtlsconnection.c: + * ext/dtls/gstdtlsconnection.h: + * ext/dtls/gstdtlsenc.c: + * ext/dtls/gstdtlsenc.h: + dtls: Propagate write errors backwards through dtlsenc/dtlsconnection + +2020-01-12 11:24:15 +0200 Sebastian Dröge + + * ext/dtls/gstdtlsconnection.c: + * ext/dtls/gstdtlsconnection.h: + * ext/dtls/gstdtlsenc.c: + dtls: Use a plain function pointer instead of a GClosure for the send callback + There's not point in using GClosure and going through all the + GValue/libffi infrastructure for each DTLS packet. + +2020-01-09 12:32:24 +0200 Sebastian Dröge + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Don't consider transceivers without mid as inactive during ICE gathering state updates + We don't have any mid before parsing the SDP, which happens after we + handled the SDP answer and that usually happens long after ICE candidate + gathering is finished. + Without this all transceivers are considered inactive and as such ICE + gathering is for active transceiver was considered complete from the + very beginning. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1126 + +2020-01-09 12:27:31 +0200 Sebastian Dröge + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Don't consider RTP receivers stopped + We don't support stopping RTP receivers currently so let's not consider + them all stopped all the time. This fixes some of the ICE/DTLS state + change handling and specifically fixes the ICE gathering state. + Previously the ICE gathering state was immediately going from NEW to + COMPLETE because it considered all transceivers stopped and as such all + activate transceivers were finished gathering ICE candidates. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1126 + +2020-01-09 12:26:41 +0200 Sebastian Dröge + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Improve logging related to ICE/DTLS state changes + +2019-12-31 02:41:40 +1100 Jan Schmidt + + * gst/yadif/meson.build: + yadif: Re-renable MMX asm on x86_64 with meson + The meson build doesn't automatically set HAVE_CPU_* defines + like autotools did, so the yadif plugin was being built without + the MMX assembler support + +2020-01-19 14:50:12 +1100 Jan Schmidt + + * gst/yadif/vf_yadif.c: + * gst/yadif/yadif.c: + yadif: Only build inline Asm with gcc/clang + +2019-11-06 04:45:09 -0800 Josep Torra + + * sys/msdk/gstmsdkdec.c: + msdkdec: align frame list using decoded timestamp + Before this change decoder used the oldest frame in the list to pair it + with the decoded surface. This only works when there's a perfect stream + like HEADERS,SYNCPOINT,DELTA... + When playing RTSP streams we can get imperfect streams like HEADERS, + DELTA,SYNCPOINT,DELTA... In this case decoder drops the frames + between HEADERS and SYNCPOINT which leads into using wrong PTS on + the output frames. + With this change we inject the input PTS into the bitstream and use it + to align the internal frame list with the actually decoded position. + Fixes playback with: + ``` + gst-launch-1.0 rtspsrc location=... latency=0 drop-on-latency=1 ! ... + ``` + +2019-11-28 21:30:18 +0900 Seungha Yang + + * sys/nvcodec/gstnvenc.c: + nvenc: Query supported minimum resolution + Hard-coded 16x16 resolution is likely to differ from the device's support + in most cases. If we can use NV_ENC_CAPS_WIDTH_MIN and NV_ENC_CAPS_HEIGHT_MIN, + update pad template with returned value. + +2019-11-28 20:47:34 +0900 Seungha Yang + + * sys/nvcodec/cuviddec.h: + * sys/nvcodec/nvEncodeAPI.h: + * sys/nvcodec/nvcuvid.h: + nvcodec: Bump SDK header to version 9.1 + Update header to query minimum resolution of encoder and to control + the number of reference frame if it's supported + +2019-12-18 18:01:30 +0000 Tim-Philipp Müller + + * gst/mxf/meson.build: + * gst/mxf/mxf.c: + * gst/mxf/mxfprores.c: + * gst/mxf/mxfprores.h: + mxfdemux: add support for Apple ProRes + +2019-11-27 12:23:58 +0800 Haihao Xiang + + * tests/examples/meson.build: + * tests/examples/msdk/meson.build: + * tests/examples/msdk/test-roi.c: + examples: add test-roi for gst-msdk + Copied and pasted from gstreamer-vaapi and did a few changes for gst-msdk. + +2019-11-27 15:16:17 +0800 Haihao Xiang + + * sys/msdk/gstmsdkdec.c: + msdkdec: support transform_meta virtual method + Allow the base class to copy GstVideoRegionOfInterestMeta data to the + output buffer when calling gst_video_decoder_finish_frame + +2019-11-27 16:00:59 +0800 Haihao Xiang + + * sys/msdk/gstmsdkenc.c: + * sys/msdk/gstmsdkenc.h: + * sys/msdk/gstmsdkh264enc.c: + * sys/msdk/gstmsdkh264enc.h: + * sys/msdk/gstmsdkh265enc.c: + * sys/msdk/gstmsdkh265enc.h: + msdkenc: set ROI region for msdk{h264, h265}enc + A reconfig is needed when ROI is changed, otherwise the ROI parameters won't + take effect + +2019-12-03 10:48:21 +0800 Haihao Xiang + + * sys/msdk/gstmsdkenc.c: + * sys/msdk/gstmsdkenc.h: + msdkenc: add set_extra_params virtual method + set_extra_params is added to allow sub class to add extra mfx parameters + for changed input frame or meta data + +2019-11-28 14:54:30 +0800 Haihao Xiang + + * sys/msdk/gstmsdkenc.c: + * sys/msdk/gstmsdkenc.h: + msdkenc: add need_reconfig virtual method + need_reconfig is added to allow sub class requires a reconfig when + the input frame or the MetaData (e.g. GstVideoRegionOfInterestMeta) + attached to the input frame is changed. + +2020-01-13 17:20:14 +0900 Seungha Yang + + * sys/d3d11/gsth265decoder.c: + d3d11h265dec: Fix wrong NoRaslOutputFlag setting + ... and handle EOS and EOB nals. + Only the first CRA picture should be associated with NoRaslOutputFlag + as the comment in code. + +2020-01-12 08:07:23 +0530 Nirbheek Chauhan + + * pkgconfig/gstreamer-plugins-bad-uninstalled.pc.in: + pkgconfig: Remove unused substitution in uninstalled.pc.in + `@videolibdir@` isn't used anymore. + +2020-01-12 07:49:47 +0530 Nirbheek Chauhan + + * tests/check/meson.build: + * tests/examples/ipcpipeline/ipcpipeline1.c: + * tests/examples/mpegts/meson.build: + * tests/examples/opencv/meson.build: + * tests/examples/waylandsink/meson.build: + * tests/examples/webrtc/meson.build: + tests: Fix minor bugs in usage of config.h + +2020-01-12 07:41:34 +0530 Nirbheek Chauhan + + * sys/ipcpipeline/gstipcpipelinecomm.c: + * sys/ipcpipeline/gstipcpipelinesrc.c: + ipcpipeline: Minimal fixes that allow building with MSVC + +2020-01-11 14:47:13 +0530 Nirbheek Chauhan + + * sys/ipcpipeline/meson.build: + * tests/examples/ipcpipeline/meson.build: + ipcpipeline: Rework compiler checks + `pipe()` isn't used since 15927b6511bc8304ae144a45c9fbfca88e5dd641, + and `socketpair()` from `#include ` is used only in the + examples. In practice, you can use probably also use anything that + allows you to create fd pairs, such as named pipes or anonymous pipes. + We use the cross-platform GstPollFD API in the plugin. + +2020-01-13 17:10:39 +0200 Sebastian Dröge + + * gst/timecode/gsttimecodestamper.c: + * gst/timecode/gsttimecodestamper.h: + timecodestamper: Add property to set the extra latency to introduce for waiting for LTC timecodes + Default to 150ms instead of 8 frames, which seems to work in the + majority of cases. + +2020-01-13 12:54:35 +0200 Sebastian Dröge + + * gst/timecode/gsttimecodestamper.c: + timecodestamper: Add some more debug output + +2020-01-11 18:24:02 +0900 Seungha Yang + + * sys/d3d11/gstd3d11bufferpool.c: + * sys/d3d11/gstd3d11colorconvert.c: + * sys/d3d11/gstd3d11colorconverter.c: + * sys/d3d11/gstd3d11decoder.c: + * sys/d3d11/gstd3d11device.c: + * sys/d3d11/gstd3d11device.h: + * sys/d3d11/gstd3d11format.c: + * sys/d3d11/gstd3d11format.h: + * sys/d3d11/gstd3d11h264dec.c: + * sys/d3d11/gstd3d11h265dec.c: + * sys/d3d11/gstd3d11memory.c: + * sys/d3d11/gstd3d11memory.h: + * sys/d3d11/gstd3d11videosink.c: + * sys/d3d11/gstd3d11vp9dec.c: + * sys/d3d11/gstd3d11window.cpp: + d3d11memory: Always use native DXGI format if device support it + Use consistent memory layout between dxva and other shader use case. + For example, use DXGI_FORMAT_NV12 texture format instead of + two textures with DXGI_FORMAT_R8_UNORM and DXGI_FORMAT_R8G8_UNORM. + +2020-01-10 20:44:19 +0900 Seungha Yang + + * sys/d3d11/gstd3d11bufferpool.c: + * sys/d3d11/gstd3d11colorconvert.c: + * sys/d3d11/gstd3d11decoder.c: + * sys/d3d11/gstd3d11download.c: + * sys/d3d11/gstd3d11h264dec.c: + * sys/d3d11/gstd3d11h265dec.c: + * sys/d3d11/gstd3d11memory.c: + * sys/d3d11/gstd3d11memory.h: + * sys/d3d11/gstd3d11upload.c: + * sys/d3d11/gstd3d11utils.c: + * sys/d3d11/gstd3d11utils.h: + * sys/d3d11/gstd3d11videosink.c: + * sys/d3d11/gstd3d11vp9dec.c: + Revert "d3d11: Add support for D3D11_USAGE_DYNAMIC" + This reverts commit ddd13fc7c061a9873b181d0de32aaf9546e7d0af + Dynamic usage can reduce the number of copy per frame but make + things complicated and the benefit seems to not significant. + Also since we don't provide _map() method for the dynamic usage, + application cannot read buffers which make "last-sample" property + unusable in case of d3d11videosink. + +2020-01-13 02:30:07 +1100 Jan Schmidt + + * ext/webrtc/gstwebrtcbin.c: + WebRTC: Support non-trickle ICE candidates in the SDP + Add any ICE candidates from the SDP before adding pending + trickle ICE candidates to support non-trickle peers + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/678 + +2020-01-11 00:01:55 +0900 Seungha Yang + + * sys/d3d11/gstd3d11h264dec.c: + * sys/d3d11/gstd3d11h264dec.h: + * sys/d3d11/gstd3d11h265dec.c: + * sys/d3d11/gstd3d11h265dec.h: + * sys/d3d11/gstd3d11vp9dec.c: + * sys/d3d11/gstd3d11vp9dec.h: + * sys/d3d11/plugin.c: + d3d11: Don't register decoders if unavailable + DXVA requires a hardware interface but may not be available, + such as in the case of VMs or when the GPU vendor does not provide a decoder interface. + +2020-01-10 23:57:15 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.c: + d3d11decoder: Don't return not initialized object from _new() method + ... and change some debug levels since initialization failure might not be fatal. + +2019-08-22 16:04:37 +0900 Shinya Saito + + * ext/wayland/wlwindow.c: + waylandsink: Fix xdg_shell fullscreen mode + xdg_shell fullscreen mode doesn't work for committing + xdg_surface without configure acknowledgement. + In addition, we can't set different surface setting from + acknowledged config in this mode. + +2019-11-11 12:40:07 -0800 Josep Torra + + * gst/videoparsers/gsth264parse.c: + * tests/check/elements/h264parse.c: + h264parse: do not push wrong PTS with some raw files + Some raw h264 encoded files trigger the assignment of wrong PTS to buffers + when some SEI data is provided. This change prevents it to happen. + Also ensure this behavior is being tested. + +2020-01-10 13:08:38 +0200 Sebastian Dröge + + * gst/timecode/gsttimecodestamper.c: + timecodestamper: Skip over invalid LTC timecodes immediately + +2020-01-10 11:40:54 +0200 Sebastian Dröge + + * gst/timecode/gsttimecodestamper.c: + timecodestamper: Clean up old LTC timecodes on LTC discontinuity + We might have some old timecodes that are in the future now and have to + drop those to make sure that our queue is correctly ordered and we don't + have multiple timecodes for the same running time. + +2020-01-10 11:33:28 +0200 Sebastian Dröge + + * gst/timecode/gsttimecodestamper.c: + timecodestamper: Fix waiting for the first video frame in case of live video input + +2020-01-09 17:41:55 +0200 Sebastian Dröge + + * gst/timecode/gsttimecodestamper.c: + * gst/timecode/gsttimecodestamper.h: + timecodestamper: Fix up handling/queueing of LTC timecodes + Directly read them out of the decoder as soon as we passed audio and + then store them in a queue that we handle internally together with their + timestamps. This cleans up memory management and gives us proper control + over the queue instead of guessing how the queue inside the LTC decoder + actually works and when it overflows. + +2020-01-09 15:27:28 +0200 Sebastian Dröge + + * gst/timecode/gsttimecodestamper.c: + timecodestamper: Only allow requesting LTC audio pad in NULL/READY states + And don't introduce any latency at all if not LTC audio pad was + requested. + +2020-01-09 15:23:20 +0200 Sebastian Dröge + + * gst/timecode/gsttimecodestamper.c: + timecodestamper: In live mode wait correctly for the latency to pass + And also introduce 6 instead of 2 frames of latency compared to the LTC + audio input as that seems to be an upper bound for how much the LTC + library is lagging behind. + +2020-01-09 15:16:02 +0200 Sebastian Dröge + + * gst/timecode/gsttimecodestamper.c: + timecodestamper: Use the internal LTC timecode tracker instead of the last one we retrieved + Otherwise we don't interpolate between LTC timecodes but only ever put + an LTC timecode on buffers once we actually received one. + +2020-01-09 14:23:08 -0500 Nicolas Dufresne + + * sys/decklink/gstdecklink.cpp: + * sys/decklink/linux/DeckLinkAPIDispatch.cpp: + decklink: Silence no driver / no SO messages + This g_once() is called everywhere, even in provider. This cause + spurious error when device monitor is used. Just silence or remove + the spurious logs. + +2020-01-10 16:03:48 +0900 Seungha Yang + + * ext/hls/meson.build: + hls: Check nettle version to ensure AES128 support + AES128 support was added since nettle version 3.0 + ../subprojects/gst-plugins-bad/ext/hls/gsthlsdemux.h:110:10: error: field ‘ctx’ has incomplete type + struct CBC_CTX (struct aes128_ctx, AES_BLOCK_SIZE) aes_ctx; + +2020-01-06 12:59:36 +0800 Haihao Xiang + + * sys/msdk/gstmsdkdec.c: + Revert "msdkdec: make sure to use video memory on Linux" + Commit a1584b6 caused big performance drop if the downstream element + is not a msdk element because it is very slow to read data from video + memory directly. + This reverts commit a1584b6f99caaf61812ac6a9654ec0e6da8240da. + +2020-01-09 21:00:47 +0900 Seungha Yang + + * tests/check/elements/d3d11colorconvert.c: + tests: d3d11colorconvert: Add test cases for visual validation + By default new test cases are disabled since it might be timed out + or test environment might not have render device. + +2020-01-09 19:39:59 +0900 Seungha Yang + + * sys/d3d11/gstd3d11colorconverter.c: + * sys/d3d11/gstd3d11format.c: + * sys/d3d11/gstd3d11format.h: + d3d11colorconverter: Handle P016_LE format + P016 format is no different than P010. Not much things to add code. + +2020-01-09 19:32:38 +0900 Seungha Yang + + * sys/d3d11/gstd3d11colorconverter.c: + d3d11colorconverter: Add support for YUV to YUV conversion + +2020-01-08 23:09:51 +0900 Seungha Yang + + * sys/d3d11/gstd3d11colorconverter.c: + d3d11colorconverter: Add support for RGB to YUV conversion + ... and remove code for RGBx since it's not supported format + by our d3d11 implementation for now. + +2020-01-09 11:14:47 +0900 Seungha Yang + + * sys/d3d11/gstd3d11format.h: + d3d11format: Remove invalid format from supported format list + +2020-01-08 07:42:21 +0200 Sebastian Dröge + + * sys/decklink/gstdecklinkvideosink.cpp: + decklinkvideosink: Always configure 10 bit YUV for VANC frames + If 8 bit are required by the device/mode then it will be converted internally + by the SDK, but the SDK won't automatically convert from 8 to 10 bit. As + such, always use 10 bit VANC. + Some devices require configuring also a 10 bit video format when using + 10 bit VANC is required but those would fail regardless and the + application would have to configure the correct video format. + With newer versions of the SDK this information can be retrieved via the + BMDDeckLinkVANCRequires10BitYUVVideoFrames flag but we don't use a new + enough SDK version yet to extract this information. + +2020-01-07 20:17:12 +0200 Sebastian Dröge + + * ext/webrtc/webrtcdatachannel.c: + webrtc: Unmap all non-binary buffers received via the datachannel + Previously they were only unmapped in case of binary data, causing all + of them to be leaked. + +2020-01-07 10:05:33 +0100 Stéphane Cerveau + + * ext/zbar/gstzbar.c: + zbar: remove useless conditional on passthrough + seen that passthrough is never set for this element, no need + to allow to remove the 'transform' call + +2019-09-27 23:02:38 +0200 Stéphane Cerveau + + * ext/meson.build: + * ext/zxing/gstzxing.cpp: + * ext/zxing/gstzxing.h: + * ext/zxing/gstzxingplugin.c: + * ext/zxing/meson.build: + * meson_options.txt: + * tests/check/elements/zxing.c: + * tests/check/meson.build: + zxing: initial plugin revision + Status: + - scan QR code with low resolution + - Scan barcode with high resolution + +2020-01-03 18:14:48 +0100 Stéphane Cerveau + + * tests/check/elements/h264parse.c: + * tests/check/elements/h265parse.c: + tests: add h26xparse HDR SEI test + Detect caps according to MDCV + CLLI SEI message + +2019-12-18 10:05:05 +0100 Stéphane Cerveau + + * tests/check/elements/h265parse.c: + * tests/check/meson.build: + test: add h265parse test + +2019-12-17 12:08:34 +0100 Stéphane Cerveau + + * gst/videoparsers/gsth264parse.c: + * gst/videoparsers/gsth265parse.c: + h26xparse: Handle state change on IDR first slice + As the H265/H264 bitstream can support multiple slices, + mastering_display_info_state and content_light_level_state + should be changed only on first slice segment. + Fix #1152 + +2019-12-05 16:48:05 +0100 Stéphane Cerveau + + * gst/videoparsers/gsth265parse.c: + h265parse: use same algo for MDCV and CLL SEI management + +2019-11-28 12:59:46 +0100 Stéphane Cerveau + + * gst-libs/gst/codecparsers/gsth264parser.c: + * gst-libs/gst/codecparsers/gsth264parser.h: + * gst/videoparsers/gsth264parse.c: + * gst/videoparsers/gsth264parse.h: + h264parser: add MDCV and CLL SEI message parsing + Allow to parse SEI message for: + - mastering display colour volume + - Light level infomation + Set to caps if necessary. + Fix #958 + +2020-01-07 01:40:57 +0900 Seungha Yang + + * ext/dash/gstplugin.c: + dash: Remove spurious condition check and remove unused debug category + Note that uppercase debug category names are used for + core modules and should be redefined in lowercase for plugins if necessary. + +2020-01-06 16:30:36 -0300 Thibault Saunier + + * gst/debugutils/gstfakevideosink.c: + fakevideosink: Use our pad template to create pad + +2019-12-30 18:58:59 +0900 Seungha Yang + + * sys/d3d11/gstd3d11_fwd.h: + * sys/d3d11/gstd3d11device.c: + * sys/d3d11/gstd3d11device.h: + * sys/d3d11/gstd3d11utils.c: + * sys/d3d11/gstd3d11videosink.c: + * sys/d3d11/gstd3d11window.c: + * sys/d3d11/gstd3d11window.cpp: + * sys/d3d11/gstd3d11window.h: + * sys/d3d11/gstd3d11window_corewindow.cpp: + * sys/d3d11/gstd3d11window_corewindow.h: + * sys/d3d11/gstd3d11window_swapchainpanel.cpp: + * sys/d3d11/gstd3d11window_swapchainpanel.h: + * sys/d3d11/gstd3d11window_win32.cpp: + * sys/d3d11/gstd3d11window_win32.h: + * sys/d3d11/meson.build: + * sys/d3d11/plugin.c: + d3d11: Add support for Universal Windows Platform + Initial UWP support via new window (CoreWindow and SwapChainPanel) implementation. + +2019-12-31 13:36:59 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.h: + * sys/d3d11/gstd3d11h264dec.c: + * sys/d3d11/gstd3d11h264dec.h: + * sys/d3d11/gstd3d11h265dec.c: + * sys/d3d11/gstd3d11h265dec.h: + * sys/d3d11/gstd3d11vp9dec.c: + d3d11decoder: Fix build on non-desktop target + Although the target platform of D3D11 decoding API are both desktop and UWP app, + DXVA header is blocked by "WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)" + which is meaning that that's only for desktop app. + To workaround this inconsistent annoyingness, we need to define WINAPI_PARTITION_DESKTOP + regardless of target WinAPI partition. + +2019-12-25 13:21:11 +0800 Haihao Xiang + + * sys/msdk/gstmsdkvp9enc.c: + msdkvp9enc: fix 10bit encoding + The codec profile should be consistent with the frame fourcc code, this + fixes pipeline below: + gst-launch-1.0 videotestsrc ! \ + video/x-raw,width=320,height=240,format=P010_10LE ! msdkvp9enc ! \ + fakesink + +2019-12-25 10:51:36 +0800 Haihao Xiang + + * sys/msdk/gstmsdkvp9enc.c: + msdkvp9enc: fix width and height + The frame width and height is rounded up to 128 and 32 since commit + 8daac1c, so the width, height for initialization should be rounded up to + 128 and 32 too because the MSDK VP9 encoder will do some check on width + and height. + Sample pipeline: + gst-launch-1.0 videotestsrc ! \ + video/x-raw,width=320,height=240,format=NV12 ! msdkvp9enc ! fakesink + +2020-01-03 15:27:30 +0800 Haihao Xiang + + * sys/msdk/gstmsdkcontext.c: + msdk: make sure the found response meets the request + Otherwise the re-used msdk response doesn't have enough frames so it is + possible the pipeline will be broken + +2019-12-26 13:31:50 -0800 Julien Isorce + + * sys/msdk/gstmsdkenc.c: + msdkenc: renegotiate when video info changes + Renegotiation was implemented for bitrate change. We can re-use + the same sequence when video info changes except that this can be + executed right away when receiving the new input format. I.e. no + need to wait for the next call to handle_frame. + +2020-01-05 16:20:18 +0000 Philippe Normand + + * sys/decklink/gstdecklink.cpp: + decklink: Fix crash when probing without driver + If there is no decklink hardware/driver, the devices list is empty (NULL), so + this needs to be checked before iterating over the list. + +2019-05-16 19:42:37 +0200 Stéphane Cerveau + + * ext/dash/gstdashsink.c: + * ext/dash/gstdashsink.h: + * ext/dash/gstmpdclient.c: + * ext/dash/gstmpdclient.h: + * ext/dash/gstmpdhelper.c: + * ext/dash/gstmpdhelper.h: + * ext/dash/gstplugin.c: + * ext/dash/meson.build: + * tests/check/elements/dash_mpd.c: + dashsink: Add new sink to produce DASH content + Add static or dynamic mpd with: + - baseURL + - period + - adaptation_set + - representaton + - SegmentList + - SegmentURL + - SegmentTemplate + Support multiple audio and video streams. + Pass conformance test with DashIF.org + +2019-12-09 15:10:00 +0100 Stéphane Cerveau + + * ext/dash/gstxmlhelper.c: + gstxmlhelper: fix xmlOutputBufferFlush ignored ret + fix CID #1456553 + +2019-09-02 14:52:53 +0200 Stéphane Cerveau + + * ext/dash/gstmpdadaptationsetnode.c: + * ext/dash/gstmpdbaseurlnode.c: + * ext/dash/gstmpdmultsegmentbasenode.c: + * ext/dash/gstmpdperiodnode.c: + * ext/dash/gstmpdrepresentationbasenode.c: + * ext/dash/gstmpdrepresentationnode.c: + * ext/dash/gstmpdrootnode.c: + * ext/dash/gstmpdrootnode.h: + * ext/dash/gstmpdsegmenttemplatenode.c: + * ext/dash/gstmpdsegmenturlnode.c: + * ext/dash/gstmpdutctimingnode.c: + dash: add set/get property for nodes + Add a way to set/get properties for given nodes: + - root + - baseurl + - representation + +2019-12-04 17:25:24 +0100 Stéphane Cerveau + + * ext/dash/gstdashdemux.c: + * ext/dash/gstmpdadaptationsetnode.c: + * ext/dash/gstmpdadaptationsetnode.h: + * ext/dash/gstmpdbaseurlnode.c: + * ext/dash/gstmpdbaseurlnode.h: + * ext/dash/gstmpdclient.c: + * ext/dash/gstmpdclient.h: + * ext/dash/gstmpdcontentcomponentnode.c: + * ext/dash/gstmpdcontentcomponentnode.h: + * ext/dash/gstmpddescriptortypenode.c: + * ext/dash/gstmpddescriptortypenode.h: + * ext/dash/gstmpdhelper.c: + * ext/dash/gstmpdhelper.h: + * ext/dash/gstmpdlocationnode.c: + * ext/dash/gstmpdlocationnode.h: + * ext/dash/gstmpdmetricsnode.c: + * ext/dash/gstmpdmetricsnode.h: + * ext/dash/gstmpdmetricsrangenode.c: + * ext/dash/gstmpdmetricsrangenode.h: + * ext/dash/gstmpdmultsegmentbasenode.c: + * ext/dash/gstmpdmultsegmentbasenode.h: + * ext/dash/gstmpdnode.c: + * ext/dash/gstmpdnode.h: + * ext/dash/gstmpdparser.c: + * ext/dash/gstmpdparser.h: + * ext/dash/gstmpdperiodnode.c: + * ext/dash/gstmpdperiodnode.h: + * ext/dash/gstmpdprograminformationnode.c: + * ext/dash/gstmpdprograminformationnode.h: + * ext/dash/gstmpdreportingnode.c: + * ext/dash/gstmpdreportingnode.h: + * ext/dash/gstmpdrepresentationbasenode.c: + * ext/dash/gstmpdrepresentationbasenode.h: + * ext/dash/gstmpdrepresentationnode.c: + * ext/dash/gstmpdrepresentationnode.h: + * ext/dash/gstmpdrootnode.c: + * ext/dash/gstmpdrootnode.h: + * ext/dash/gstmpdsegmentbasenode.c: + * ext/dash/gstmpdsegmentbasenode.h: + * ext/dash/gstmpdsegmentlistnode.c: + * ext/dash/gstmpdsegmentlistnode.h: + * ext/dash/gstmpdsegmenttemplatenode.c: + * ext/dash/gstmpdsegmenttemplatenode.h: + * ext/dash/gstmpdsegmenttimelinenode.c: + * ext/dash/gstmpdsegmenttimelinenode.h: + * ext/dash/gstmpdsegmenturlnode.c: + * ext/dash/gstmpdsegmenturlnode.h: + * ext/dash/gstmpdsnode.c: + * ext/dash/gstmpdsnode.h: + * ext/dash/gstmpdsubrepresentationnode.c: + * ext/dash/gstmpdsubrepresentationnode.h: + * ext/dash/gstmpdsubsetnode.c: + * ext/dash/gstmpdsubsetnode.h: + * ext/dash/gstmpdurltypenode.c: + * ext/dash/gstmpdurltypenode.h: + * ext/dash/gstmpdutctimingnode.c: + * ext/dash/gstmpdutctimingnode.h: + * ext/dash/gstxmlhelper.c: + * ext/dash/gstxmlhelper.h: + * ext/dash/meson.build: + * tests/check/elements/dash_mpd.c: + dash: Generate an XML content from object. + Add mpd node base class to provide + xml generation facilities for child + objects. + +2019-12-26 11:24:37 -0800 Julien Isorce + + * sys/msdk/gstmsdkdec.c: + msdkdec: trigger renegotiation if video info changes + Useful when framerate changes. Previously it was only checking + for resolution change but renego should happen if any video + info changes. + +2019-12-23 15:17:07 +0900 Seungha Yang + + * ext/vulkan/vksink.c: + vulkansink: Fix null pointer exception + context query might happen before creating swapper. + +2019-12-17 16:10:53 -0800 Julien Isorce + + * sys/msdk/gstmsdkdec.c: + msdkdec: make sure to use video memory on Linux + The block that sets use_video_memory flag is after the + the condition `if gst_msdk_context_prepare` but it + always returns false when there is no other msdk elements. + So the decoder ends up with use_video_memory as FALSE. + Note that msdkvpp always set use_video_memory as TRUE. + When use_video_memory is FALSE then the msdkdec allocates + the output frames with posix_memalign (see gstmsdksystemmemory.c). + The result is then copied back to the GstVideoPool's buffers + (or to the downstream pool's buffers if any). + When use_video_memory is TRUE then the msdkdec uses vaCreateSurfaces + to create vaapi surfaces for the hw decoder to decode into + (see gstmsdkvideomemory.c). The result is then copied to either + the internal GstVideoPool and to the downstream pool if any. + (vaDeriveImage/vaMapBuffer is used in order to read the surfaces) + +2020-01-02 12:22:07 +0900 Seungha Yang + + * sys/msdk/gstmsdkdec.c: + msdkdec: Correct return value of GstVideoDecoder::flush() + Use boolean instead of GstFlowReturn as declared. + Note that since base class does not check return value of GstVideoDecoder::flush(), + this would not cause any change of behavior. + +2019-12-23 14:09:25 +0800 Haihao Xiang + + * sys/msdk/gstmsdkdec.c: + msdkdec: free unlocked msdk surface before output buffer allocation + https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/merge_requests/924 + is trying to use video memory for decoding on Linux, which reveals a + hidden bug in msdkdec. + For video memory, it is possible that a locked mfx surface is not used + indeed and it will be un-locked later in MSDK, so we have to check the + associated MSDK surface to find out and free un-used surfaces, otherwise + it is easy to exhaust all pre-allocated mfx surfaces and get errors below: + 0:00:00.777324879 27290 0x564b65a510a0 ERROR default + gstmsdkvideomemory.c:77:gst_msdk_video_allocator_get_surface: failed to + get surface available + 0:00:00.777429079 27290 0x564b65a510a0 ERROR msdkbufferpool + gstmsdkbufferpool.c:260:gst_msdk_buffer_pool_alloc_buffer: + failed to create new MSDK memory + Note the sample code in MSDK does similar thing in + CBuffering::SyncFrameSurfaces() + +2019-12-12 19:02:25 +0200 Sebastian Dröge + + * ext/hls/gsthlssink2.c: + * ext/hls/gsthlssink2.h: + * ext/hls/meson.build: + hlssink2: Add signals for allowing custom playlist/fragment handling + Instead of always going through the file system API we allow the + application to modify the behaviour. For the playlist itself and + fragments, the application can provide a GOutputStream. In addition the + sink notifies the application whenever a fragment can be deleted. + +2019-12-31 12:41:25 +0200 Sebastian Dröge + + * tests/examples/webrtc/webrtcbidirectional.c: + webrtc: Actually make use of promise created one line before + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1042 + +2019-12-30 19:50:29 +0100 Mark Nauwelaerts + + * gst/mpegtsdemux/tsdemux.c: + mpegtsdemux: resurrect actual and efficient seeking of all kinds + ... by seeking to target offset determined by new seek segment, + rather than that of the previous segment. The latter would typically + seek back to start for a non-accurate seek, and lead to a lot + of skipping in case of an accurate seek. + +2019-12-26 14:28:03 +0900 Seungha Yang + + * sys/d3d11/gstd3d11_fwd.h: + * sys/d3d11/gstd3d11decoder.c: + * sys/d3d11/gstd3d11decoder.h: + * sys/d3d11/gstd3d11h265dec.c: + * sys/d3d11/gstd3d11h265dec.h: + * sys/d3d11/gsth265decoder.c: + * sys/d3d11/gsth265decoder.h: + * sys/d3d11/gsth265picture.c: + * sys/d3d11/gsth265picture.h: + * sys/d3d11/meson.build: + * sys/d3d11/plugin.c: + d3d11: Add h265 decoder element + Some DPB management implementation is taken from gstreamer-vaapi + +2019-12-20 23:05:52 +0900 Seungha Yang + + * sys/d3d11/gstd3d11_fwd.h: + * sys/d3d11/gstd3d11decoder.c: + * sys/d3d11/gstd3d11decoder.h: + * sys/d3d11/gstd3d11vp9dec.c: + * sys/d3d11/gstd3d11vp9dec.h: + * sys/d3d11/gstvp9decoder.c: + * sys/d3d11/gstvp9decoder.h: + * sys/d3d11/gstvp9picture.c: + * sys/d3d11/gstvp9picture.h: + * sys/d3d11/meson.build: + * sys/d3d11/plugin.c: + d3d11: Add vp9 decoder element + Based on gstreamer-vaapi and Chromium implemetation. + +2019-12-26 14:24:46 +0900 Seungha Yang + + * sys/d3d11/gstd3d11_fwd.h: + * sys/d3d11/gstd3d11decoder.c: + * sys/d3d11/gstd3d11decoder.h: + * sys/d3d11/gstd3d11h264dec.c: + * sys/d3d11/gstd3d11h264dec.h: + * sys/d3d11/gsth264decoder.c: + * sys/d3d11/gsth264decoder.h: + * sys/d3d11/gsth264picture.c: + * sys/d3d11/gsth264picture.h: + * sys/d3d11/meson.build: + * sys/d3d11/plugin.c: + d3d11: Add h264 decoder element + New decoder implementation based on dxva2 on d3d11 APIs. The DPB + management implementation is taken from Chromium. + +2019-12-20 22:50:55 +0900 Seungha Yang + + * sys/d3d11/gstd3d11bufferpool.c: + * sys/d3d11/gstd3d11memory.c: + * sys/d3d11/gstd3d11memory.h: + d3d11: Add support for Array typed texture memory + A ID3D11Texture2D memory can consist of multiple planes with array. + For array typed memory, GstD3D11Allocator will allocate new GstD3D11Memory + with increased reference count to the ID3D11Texture2D but different array index. + +2019-12-18 15:37:03 +0100 Stéphane Cerveau + + * ext/neon/gstneonhttpsrc.c: + * gst/librfb/gstrfbsrc.c: + * sys/directsound/gstdirectsoundsrc.c: + * sys/dshowsrcwrapper/gstdshowaudiosrc.cpp: + bad: use of g_value_dup_string + Use helper method to get string from GValue. + +2019-12-30 12:52:20 +0200 Sebastian Dröge + + * ext/dtls/gstdtlsenc.c: + dtlsenc: Don't warn on GST_FLOW_FLUSHING or GST_FLOW_EOS + Only warn if pushing a buffer returns an actual error to not pollute + logs with confusing warnings. + +2019-12-27 16:56:32 +0200 Sebastian Dröge + + * gst/timecode/gsttimecodestamper.c: + * gst/timecode/gsttimecodestamper.h: + timecodestamper: Refactor LTC audio waiting and properly handle live inputs + If one of the inputs is live, add a latency of 2 frames to the video + stream and wait on the clock for that much time to pass to allow for the + LTC audio to be ahead. + In case of live LTC, don't do any waiting but only ensure that we don't + overflow the LTC queue. + Also in non-live LTC audio mode, flush too old items from the LTC queue + if the video is actually ahead instead of potentially waiting forever. + This could've happened if there was a bigger gap in the video stream. + +2019-12-26 20:10:55 +0900 Seungha Yang + + * tests/check/elements/d3d11colorconvert.c: + * tests/check/meson.build: + tests: Add simple d3d11colorconvert unit test + +2019-12-26 19:55:40 +0900 Seungha Yang + + * sys/d3d11/gstd3d11colorconvert.c: + * sys/d3d11/gstd3d11download.c: + * sys/d3d11/gstd3d11upload.c: + * sys/d3d11/gstd3d11utils.c: + * sys/d3d11/gstd3d11utils.h: + * sys/d3d11/gstd3d11videosink.c: + d3d11: Aggregate d3d11 memory usage query for dynamic-usage type decision + Even if one of downstream d3d11 elements can support dynamic-usage memory, + another one might not support it. Also, to support dynamic-usage, + both upstream and downstream d3d11device must be the same object. + +2019-12-26 17:00:52 +0900 Seungha Yang + + * sys/d3d11/gstd3d11colorconvert.c: + * sys/d3d11/gstd3d11colorconvert.h: + d3d11colorconvert: Remove device type dependent behavior + If d3d11colorconvert element is configured, do color space conversion + regardless of the device type whether it's S/W emulation or real H/W. + Since d3d11colorconvert is no more a child of d3d11videosinkbin, + we don't need this behavior. Note that previous code was added to + avoid color space conversion from d3d11videosink if no hardware + device is available (S/W emulation of d3d11 is too slow). + +2019-12-26 16:43:35 +0900 Seungha Yang + + * sys/d3d11/gstd3d11colorconverter.c: + d3d11colorconverter: Fix unmatched lock/unlock pair + +2019-12-26 16:03:31 +0900 Seungha Yang + + * sys/d3d11/gstd3d11upload.c: + d3d11upload: Don't hard overwrite caps features to support d3d11 memory passthrough + d3d11upload should be able to support upstream d3d11 memory, not only system memory. + Fix for following pipeline + d3d11upload ! "video/x-raw(memory:D3D11Memory)" ! d3d11videosink + +2019-12-26 22:43:35 +0100 Nicola Murino + + * ext/opencv/meson.build: + opencv: allow compilation against 4.2.x + +2019-12-24 14:00:15 +0900 Seungha Yang + + * sys/d3d11/gstd3d11window.c: + * sys/d3d11/gstd3d11window.h: + d3d11window: Make use of partial presentation with IDXGISwapChain1::Present1 + Since we might draw on partial area of backbuffer in case of force-aspect-ratio, + presenting only updated area is more efficient way. + See also https://docs.microsoft.com/ko-kr/windows/win32/direct3ddxgi/dxgi-1-2-presentation-improvements + +2019-12-24 15:54:57 +0900 Seungha Yang + + * sys/d3d11/gstd3d11colorconvert.c: + * sys/d3d11/gstd3d11colorconverter.c: + * sys/d3d11/gstd3d11colorconverter.h: + * sys/d3d11/gstd3d11download.c: + * sys/d3d11/gstd3d11overlaycompositor.c: + * sys/d3d11/gstd3d11overlaycompositor.h: + * sys/d3d11/gstd3d11shader.c: + * sys/d3d11/gstd3d11shader.h: + * sys/d3d11/gstd3d11upload.c: + * sys/d3d11/gstd3d11videosink.c: + * sys/d3d11/gstd3d11videosinkbin.c: + * sys/d3d11/gstd3d11window.c: + * sys/d3d11/gstd3d11window.h: + * sys/d3d11/meson.build: + * sys/d3d11/plugin.c: + d3d11videosink: Add support for overlay composition + Add d3d11overlaycompositor object to draw overlay image + on render target using Blend method. + +2019-12-20 18:56:08 +0900 Seungha Yang + + * sys/d3d11/gstd3d11colorconvert.c: + * sys/d3d11/gstd3d11colorconverter.c: + * sys/d3d11/gstd3d11device.c: + * sys/d3d11/gstd3d11device.h: + * sys/d3d11/gstd3d11memory.c: + * sys/d3d11/gstd3d11shader.c: + * sys/d3d11/gstd3d11upload.c: + * sys/d3d11/gstd3d11utils.c: + * sys/d3d11/gstd3d11utils.h: + * sys/d3d11/gstd3d11videosink.c: + * sys/d3d11/gstd3d11window.c: + * sys/d3d11/meson.build: + * sys/d3d11/plugin.c: + d3d11: Enable dxgi debug layer and always try to pop d3d11/dxgi debug message if possible + Note that dxgi and d3d11 sdk debug will be enabled on debug build + +2019-11-28 18:54:31 +0900 Seungha Yang + + * sys/nvcodec/gstcudaloader.c: + * sys/nvcodec/gstnvbaseenc.c: + * sys/nvcodec/gstnvdec.c: + * sys/nvcodec/gstnvdec.h: + * sys/nvcodec/gstnvenc.c: + * sys/nvcodec/gstnvenc.h: + * sys/nvcodec/plugin.c: + nvcodec: Refactor plugin initialization + Create CUDA context per device, instead of per codec and encoder/decoder. + Allocating CUDA context is heavy operation so we should reuse it + as much as possible. + Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1130 + +2019-12-20 12:37:51 +0900 Seungha Yang + + * gst-libs/gst/vulkan/win32/gstvkwindow_win32.c: + vulkan/window/win32: Don't post any WinProc message to parent window + Posting any message to parent seems to be pointless. That might break + parent window. + Regardless of the posting, parent window can catch mouse event + and also any keyboard events will be handled by parent window by default. + +2019-11-11 09:47:00 -0500 Aaron Boxer + + * ext/openjpeg/gstopenjpegenc.c: + * ext/openjpeg/gstopenjpegenc.h: + openjpegenc: add support for sub-frame encoding + Following the standard for low latency JPEG 2000 encoding + https://www.itu.int/rec/dologin_pub.asp?lang=e&id=T-REC-H.222.0-200701-S!Amd1!PDF-E&type=items + we divide the image into stripes of a specified height, and encode + each stripe as a self-contained JPEG 2000 image. This MR is based on + https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/merge_requests/429 + +2019-03-23 21:01:51 +0900 Yeongjin Jeong + + * ext/meson.build: + * ext/svthevcenc/gstsvthevcenc.c: + * ext/svthevcenc/gstsvthevcenc.h: + * ext/svthevcenc/meson.build: + * meson_options.txt: + * tests/check/elements/svthevcenc.c: + * tests/check/meson.build: + svthevcenc: Add new SVT-HEVC encoder element + The SVT-HEVC (Scalable Video Technology[0] for HEVC) Encoder is an + open source video coding technology[1] that is highly optimized for + Intel Xeon Scalable processors and Intel Xeon D processors. + [0] https://01.org/svt + [1] https://github.com/OpenVisualCloud/SVT-HEVC + +2019-09-30 16:29:50 +0900 Yeongjin Jeong + + * gst-libs/gst/codecparsers/gsth265parser.c: + * gst-libs/gst/codecparsers/gsth265parser.h: + * gst/videoparsers/gsth265parse.c: + h265parser: Add simple GstH265Profile/string public utilites + It makes more simplifies the conversion between GstH265Profile and string. + +2019-12-20 00:01:26 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.c: + d3d11videosink: Use dynamic texture for fallback buffer + Upload CPU memory to texture directly by using dynamic usage texture. + This will reduce at least one step of staging copy per frame. + +2019-12-19 23:58:17 +0900 Seungha Yang + + * sys/d3d11/gstd3d11colorconvert.c: + d3d11colorconvert: Set TRANSFER_NEED_DOWNLOAD flag to output memory for later cpu access + Otherwise CPU cannot access texture via gst_memory_map() + +2019-12-19 22:07:42 +0900 Seungha Yang + + * sys/d3d11/gstd3d11colorconvert.c: + d3d11colorconvert: Use shader resource and render target bind flags together + The output of d3d11colorconvert would be used for rendering (i.e., shader resource) + +2019-12-19 21:47:57 +0900 Seungha Yang + + * sys/d3d11/gstd3d11window.c: + * sys/d3d11/gstd3d11window.h: + d3d11window: Change aspect-ratio mode from window thread + Call DXGI API from window thread as much as possible + +2019-12-17 20:49:52 +0900 Seungha Yang + + * tests/examples/d3d11videosink/d3d11videosink-kb.c: + * tests/examples/d3d11videosink/d3d11videosink-kb.h: + * tests/examples/d3d11videosink/d3d11videosink.c: + * tests/examples/d3d11videosink/meson.build: + * tests/examples/meson.build: + examples: Add example for d3d11videosink + This is fork of win32-videooverlay in -base but more d3d11videosink specific one. + +2019-12-15 19:29:10 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.c: + * sys/d3d11/gstd3d11videosink.h: + * sys/d3d11/gstd3d11videosinkbin.c: + * sys/d3d11/gstd3d11window.c: + * sys/d3d11/gstd3d11window.h: + d3d11videosink: Add support for full screen mode + borderless top-most style full screen mode support. + Basically fullscreen toggle mode is disabled by default. To enable it + use "fullscreen-toggle-mode" property to allow fullscreen mode change + by user input and/or property. + +2019-12-20 00:17:33 +0900 Seungha Yang + + * sys/d3d11/gstd3d11colorconvert.c: + * sys/d3d11/gstd3d11colorconverter.c: + * sys/d3d11/gstd3d11device.c: + * sys/d3d11/gstd3d11device.h: + * sys/d3d11/gstd3d11download.c: + * sys/d3d11/gstd3d11format.c: + * sys/d3d11/gstd3d11memory.c: + * sys/d3d11/gstd3d11shader.c: + * sys/d3d11/gstd3d11shader.h: + * sys/d3d11/gstd3d11upload.c: + * sys/d3d11/gstd3d11window.c: + * sys/d3d11/gstd3d11window.h: + d3d11: Use GRecMutex to protect immediate context and dxgi API call + In some cases, rendering and dxgi (e.g., swapchain) APIs should be + called from window message pump thread, but current design (dedicated d3d11 thread) + make it impossible. To solve it, change concurrency model to locking based one + from single-thread model. + +2019-12-18 20:55:01 +0900 Seungha Yang + + * sys/d3d11/gstd3d11window.c: + d3d11window: Prefer to use flip-sequential over discard + flip-sequential is more efficient than discard + +2019-12-18 20:36:32 +0900 Seungha Yang + + * sys/d3d11/gstd3d11window.c: + * sys/d3d11/gstd3d11window.h: + d3d11window: Don't hold backbuffer interface + We don't need to hold it + +2019-12-18 14:23:03 +0900 Seungha Yang + + * sys/d3d11/gstd3d11device.c: + * sys/d3d11/gstd3d11device.h: + * sys/d3d11/gstd3d11window.c: + d3d11window: Use CreateSwapChainForHwnd if available + That's recommended way from MS and CreateSwapChainForHwnd supports + more options than CreateSwapChain + +2019-12-18 13:21:31 +0900 Seungha Yang + + * sys/d3d11/gstd3d11_fwd.h: + * sys/d3d11/gstd3d11device.c: + * sys/d3d11/gstd3d11window.c: + * sys/d3d11/meson.build: + d3d11: Use configuration file for dxgi header version check + +2019-12-17 13:47:24 +0900 Seungha Yang + + * sys/d3d11/gstd3d11device.c: + * sys/d3d11/gstd3d11window.c: + * sys/d3d11/gstd3d11window.h: + d3d11window: Use allow-tearing mode if device supports it + As the recommendation from MS. + +2019-12-15 18:30:22 +0900 Seungha Yang + + * sys/d3d11/gstd3d11window.c: + d3d11window: Disable fullscreen mode change by alt + enter + Disable full screen mode change until proper handling is implemented + +2019-12-15 16:23:00 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.c: + * sys/d3d11/gstd3d11videosink.h: + * sys/d3d11/gstd3d11window.c: + * sys/d3d11/gstd3d11window.h: + d3d11videosink: Remove resizing window hack and unify resizing flow + In earlier implementation of d3d11videosink where no shader was implemented, + the aspect ratio and render size were adjusted by manipulating the backbuffer size + with unintuitive formula. Since now we do color conversion and resize using + shader, we can remove the hack. + +2019-12-15 15:50:19 +0900 Seungha Yang + + * sys/d3d11/gstd3d11colorconvert.c: + * sys/d3d11/gstd3d11memory.c: + * sys/d3d11/gstd3d11memory.h: + * sys/d3d11/gstd3d11videosink.c: + d3d11: Pass GstD3D11Memory object to ensure_{shader_resource,render_target}_view methods + The method name indicates it should be d3d11memory, so passing + GstD3D11Memory seems to make more sense than GstMemory. + +2019-12-15 15:44:20 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.c: + d3d11videosink: Don't specify crop meta to allocation query + d3d11videosink could not handle it for now + +2019-12-19 15:19:29 -0500 Nicolas Dufresne + + * gst/autoconvert/gstautoconvert.c: + autoconvert: Fix lock-less exchange or free condition + Before this change, we would free the list we just have saved. + Fixes #1158 + +2019-11-12 12:27:51 +0100 Francisco Javier Velázquez-García (francisv) + + * ext/srt/gstsrtobject.c: + * ext/srt/gstsrtobject.h: + gstsrtsink: Add `wait-for-connection` property to `srtsink` + Add `wait-for-connection` property to `srtsink` element. This + property allows the element to process packets even when no clients + are connected. + +2019-12-07 09:56:28 -0600 Aaron Boxer + + * sys/d3dvideosink/d3dvideosink.c: + d3dvideosink: hold class lock for entire duration of class destruction + This avoids a race condition currently when temporarily releasing the + lock and then re-acquiring. + +2019-12-07 09:54:49 -0600 Aaron Boxer + + * sys/d3dvideosink/d3dhelpers.c: + * sys/d3dvideosink/d3dhelpers.h: + d3dvideosink: improve concurrency on hidden window create/destroy + +2019-12-07 14:51:28 -0600 Aaron Boxer + + * sys/d3dvideosink/d3dhelpers.c: + * sys/d3dvideosink/d3dvideosink.h: + d3dvideosink: use thread pool to handle events from hidden window event queue + window event queue now does not lock on the class lock, so we can now shut + it down without releasing the class lock, thus avoiding a potential race when + stopping the sink. + +2019-12-07 09:53:20 -0600 Aaron Boxer + + * sys/d3dvideosink/d3dhelpers.c: + d3dvideosink: improve concurrency on internal window create/destroy + Remove timeout and rely on condition variable instead to indicate thread + start. + +2019-12-07 09:34:55 -0600 Aaron Boxer + + * sys/d3dvideosink/d3dhelpers.c: + d3dvideosink: only warn about HWND already set if new HWND is not NULL + +2019-12-07 00:25:05 -0600 Aaron Boxer + + * sys/d3dvideosink/d3dhelpers.c: + d3dvideosink: add more null checks + +2019-12-07 00:01:47 -0600 Aaron Boxer + + * sys/d3dvideosink/d3dhelpers.c: + d3dvideosink: check ref count and device before resetting display + +2019-12-07 09:41:32 -0600 Aaron Boxer + + * sys/d3dvideosink/d3dhelpers.c: + * sys/d3dvideosink/d3dhelpers.h: + d3dvideosink: use class lock when checking d3d formats, and cache format list + +2019-12-06 23:50:50 -0600 Aaron Boxer + + * sys/d3dvideosink/d3dhelpers.c: + * sys/d3dvideosink/d3dvideosink.c: + d3dvideosink: destroy device just before final d3d release call + and free overlays after swap chain is released + +2019-12-06 23:26:34 -0600 Aaron Boxer + + * sys/d3dvideosink/d3dhelpers.c: + d3dvideosink: add two forward declarations + +2019-12-06 23:24:57 -0600 Aaron Boxer + + * sys/d3dvideosink/d3dhelpers.c: + d3dvideosink: use class lock when setting pool config + +2019-12-06 23:23:45 -0600 Aaron Boxer + + * sys/d3dvideosink/d3dhelpers.c: + d3dvideosink: use class lock when allocating pool buffer + +2019-12-06 23:19:11 -0600 Aaron Boxer + + * sys/d3dvideosink/gstd3d9overlay.c: + d3dvideosink: use class lock when creating overlay textures + +2019-12-06 23:16:05 -0600 Aaron Boxer + + * sys/d3dvideosink/gstd3d9overlay.c: + d3dvideosinnk: check d3d device exists before creating overlay vertex buffer + +2019-12-06 23:14:06 -0600 Aaron Boxer + + * sys/d3dvideosink/d3dhelpers.c: + d3dvideosink: pass hidden window hwnd to GST_DEBUG, rather than NULL + +2019-12-06 23:11:11 -0600 Aaron Boxer + + * sys/d3dvideosink/d3dhelpers.c: + d3dvideosink: fix typo + +2019-12-18 03:03:40 +0000 Stéphane Cerveau + + * gst/videoparsers/gsth264parse.c: + * tests/check/elements/h264parse.c: + h264parse: Align GST_H264_PROFILE_HIGH_422 to H264 standards + According to H264 ITU standards from 06/19, GST_H264_PROFILE_HIGH_422 + (profile_idc = 122) with constraint_set1_flag = 0 and + constraint_set3_flag = 0 can be mapped to high-4:2:2 or high-4:4:4. + GST_H264_PROFILE_HIGH_422 with constraint_set1_flag = 0 and + constraint_set3_flag = 1 can be mapped to high-4:2:2, high-4:4:4, + high-4:2:2-intra or high-4:4:4-intra. + +2019-12-17 16:44:10 -0500 Olivier Crête + + * gst/videoparsers/gstvideoparseutils.c: + * gst/videoparsers/gstvideoparseutils.h: + Revert "videoparseutils: support two new EIA 608 closed caption formats" + This reverts commit f5c1c90122840396f3a34f787bd66a672be21c3b. + +2019-12-17 16:43:54 -0500 Olivier Crête + + * ext/closedcaption/gstccextractor.c: + Revert "ccextractor: support new CEA 608 formats" + This reverts commit 80dd7b2d3d871f1cf456bda249bc90e4eeeb53b1. + +2019-05-02 13:20:29 -0400 Aaron Boxer + + * ext/closedcaption/gstccextractor.c: + ccextractor: support new CEA 608 formats + +2019-10-24 22:06:59 -0400 Aaron Boxer + + * gst/videoparsers/gstvideoparseutils.c: + * gst/videoparsers/gstvideoparseutils.h: + videoparseutils: support two new EIA 608 closed caption formats + +2019-11-09 19:37:10 +0900 Wonchul Lee + + * ext/wayland/gstwaylandsink.c: + * ext/wayland/wlvideoformat.c: + wlvideoformat: clean up video formats + It cleans up videoFormat by combining the wl_shm_formats and + drm_formats into a single table that represents the same format. + In addition, it adds NV61 format to the waylandsink. + +2019-12-16 16:59:07 +0900 Seungha Yang + + * sys/d3d11/gstd3d11window.c: + * sys/d3d11/gstd3d11window.h: + d3d11window: Always draw to internal window + ... and use SetParent() WIN32 API when external window is used. + Depending on DXGI swap effect, the external window might not be + reusable by another backend. To preserve the external window's property + and setting, drawing to internal window seems to be safer way. + +2019-12-14 21:41:01 +0900 Seungha Yang + + * sys/d3d11/gstd3d11window.c: + d3d11window: Always set error reason to GError object + +2019-12-13 15:33:06 -0800 Julien Isorce + + * sys/msdk/gstmsdkdec.c: + msdkdec: call finalize on the parent class + Otherwise GstVideoDecoder is not finalized and + resources are leaked. + Somehow GST_TRACERS="leaks" GST_DEBUG="GST_TRACER:7" did not catch it. + Valgrind output: + ==31645== 22,480 (1,400 direct, 21,080 indirect) bytes in 5 blocks are definitely lost in loss record 5,042 of 5,049 + ==31645== at 0x4C2FB0F: malloc + ==31645== by 0x51D9E88: g_malloc + ==31645== by 0x51FA7B5: g_slice_alloc + ==31645== by 0x51FAC68: g_slice_alloc0 + ==31645== by 0x58D9984: g_type_create_instance + ==31645== by 0x58BA344: g_object_new_with_properties + ==31645== by 0x58BADA0: g_object_new + ==31645== by 0x8ECA966: gst_video_decoder_init + ==31645== by 0x58D99E7: g_type_create_instance + ==31645== by 0x58BA344: g_object_new_with_properties + +2019-12-11 14:17:37 +0700 Roman Shpuntov + + * sys/applemedia/avfvideosrc.m: + avfvideosrc: element requests camera permissions even with capture-screen property is true + https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1137 + macOS has different dialogs for camera capture and screen capture. + No need to request screen capture permissions, the system detect + screen capture automatically and create request dialog. + +2019-12-11 21:51:03 +0900 Seungha Yang + + * sys/d3d11/gstd3d11window.c: + d3d11window: Initialize surface rect with given external window handle + Unlike internal window, resize event might not happen with external window. + +2019-12-11 20:21:42 +0900 Seungha Yang + + * sys/d3d11/gstd3d11device.c: + d3d11device: Report alive d3d11 objects at the end + It would be useful for debugging d3d11 object leak. + +2019-12-11 20:19:45 +0900 Seungha Yang + + * sys/d3d11/gstd3d11colorconverter.c: + * sys/d3d11/gstd3d11shader.c: + d3d11: Fix ID3D11SamplerState leak + +2019-12-11 10:47:20 +0100 Stéphane Cerveau + + * ext/curl/gstcurlbasesink.c: + * ext/curl/gstcurlhttpsrc.c: + * ext/fdkaac/gstfdkaacenc.c: + * ext/kate/gstkatetiger.c: + * ext/neon/gstneonhttpsrc.c: + * ext/opencv/gsthanddetect.cpp: + * ext/openni2/gstopenni2src.cpp: + * ext/resindvd/gstpesfilter.c: + * ext/soundtouch/gstbpmdetect.cc: + * ext/teletextdec/gstteletextdec.c: + * gst-libs/gst/player/gstplayer.c: + * gst-libs/gst/transcoder/gsttranscoder.c: + * gst-libs/gst/uridownloader/gsturidownloader.c: + * gst-libs/gst/vulkan/cocoa/gstvkwindow_cocoa.m: + * gst/accurip/gstaccurip.c: + * gst/autoconvert/gstautovideoconvert.c: + * gst/mpegdemux/gstpesfilter.c: + * gst/vmnc/vmncdec.c: + * sys/msdk/gstmsdkdec.c: + * sys/uvch264/gstuvch264_mjpgdemux.c: + * tests/check/elements/curlhttpsrc.c: + * tests/check/elements/dash_demux.c: + * tests/check/elements/hls_demux.c: + * tests/check/elements/mssdemux.c: + * tests/check/elements/webrtcbin.c: + * tests/examples/playout.c: + remove various useless linefeed in logs + +2019-11-07 15:54:47 +0800 Haihao Xiang + + * sys/msdk/gstmsdkh265dec.c: + * sys/msdk/gstmsdkh265enc.c: + * sys/msdk/gstmsdkvp8dec.c: + * sys/msdk/gstmsdkvp9dec.c: + * sys/msdk/gstmsdkvp9enc.c: + * sys/msdk/msdk.c: + * sys/msdk/msdk.h: + msdk: ignore MFX_ERR_UNDEFINED_BEHAVIOR when loading a plugin + An issue can be seen when using msdkh265enc with bitrate change in + playing state. The root cause is the corresponding plugin is loaded + again. + Returning MFX_ERR_UNDEFINED_BEHAVIOR from MSDK just means the plugin has + been loaded, so we may ignore this error when doing configuation again + in the sub class, otherwise the pipeline will be interrupted + +2019-12-09 21:01:32 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.c: + d3d11videosink: Fix broken fallback rendering + Make fallback rendering work + +2019-12-09 19:54:30 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.c: + d3d11videosink: Add debug message for fallback reason + +2019-12-09 00:14:53 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.c: + * sys/d3d11/gstd3d11videosink.h: + * sys/d3d11/gstd3d11window.c: + * sys/d3d11/gstd3d11window.h: + d3d11window: Do not check shader resource view if not doing conversion + If d3d11window does not convert format internally, shader resource view + is not required. Note that shader resource view is used for + color conversion using shader but when conversion is not required, + we just copy input input texture to backbuffer. + +2019-12-05 21:19:13 -0800 Julien Isorce + + * sys/msdk/gstmsdkvpp.c: + msdkvpp: check mfx surface nullity for the input buffer + In theory it should not happen but it happened to me + in some cases where it failed to allocate some video + buffers so this was a consequence of a corner case. + Better to be safe than sorry. + +2019-12-08 16:39:16 +0900 Seungha Yang + + * sys/d3d11/gstd3d11window.c: + d3d11window: Clear old swapchain per prepare + _prepare() might be called multiple times for given window, so clear + old swapchain if any. + Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1138 + +2019-12-09 15:35:03 -0500 Olivier Crête + + * ext/srtp/gstsrtpdec.c: + srtp: Remove %z as it doesn't work on Windows + +2019-12-09 17:54:02 +0100 Alicia Boya García + + * gst/debugutils/gsttestsrcbin.c: + gsttestsrcbin: Avoid not-linked errors when switching tracks + The previous implementation had a very high reproducibility race where + if after a track switch, the ex-active track pad completed a buffer + chain (now returning not-linked) the flow combiner had all their pads in + non-linked state, propagating it as an error and stopping the pipeline. + By resetting the flow combiner in response to RECONFIGURE events that + race is made impossible. + +2019-12-06 08:50:05 -0800 Julien Isorce + + * sys/msdk/gstmsdkdec.c: + msdkdec: fix assertion 'frame->ref_count > 0' failed + Can happen if the oldest frame is the current frame + and if gst_video_decoder_finish_frame failed in which + case the current is unref and then drop instead of + just drop. + This patch also removes some assumptions, it was strange + to call unref and finish_frame in gst_msdkdec_finish_task. + In principle when owning a frame, the code should either + unref, or drop or finish. + +2019-12-08 17:25:26 +0900 Seungha Yang + + * sys/d3d11/gstd3d11window.c: + d3d11window: Always set dxgi colorspace if possible + Not only for the 10 bits RGB case with HDR metadata, set proper color space + to swapchain in order to make color representaion correct + +2019-09-03 13:56:22 +1000 Matthew Waters + + * meson.build: + * sys/applemedia/corevideobuffer.c: + * sys/applemedia/iosurfacevulkanmemory.c: + * sys/applemedia/iosurfacevulkanmemory.h: + * sys/applemedia/meson.build: + * sys/applemedia/metal-helpers.h: + * sys/applemedia/videotexturecache-vulkan.h: + * sys/applemedia/videotexturecache-vulkan.mm: + * sys/applemedia/vtdec.c: + * sys/applemedia/vtdec.h: + vtdec: add support for outputing vulkan images + +2019-09-03 13:42:43 +1000 Matthew Waters + + * gst-libs/gst/vulkan/gstvkimagememory.c: + * gst-libs/gst/vulkan/gstvkimagememory.h: + vulkan/image: expose initialization function for subclasses + +2019-09-03 00:30:31 +1000 Matthew Waters + + * gst-libs/gst/vulkan/meson.build: + vulkan/macos: link directly to MoltenVK + It's currently the only sane way we can use MoltenVK functions to + integrate with Metal API. + It also removes the need to specify the VK_ICD_FILENAMES environment + variable pointing to MoltenVK_icd.json. + +2019-09-02 15:00:27 +1000 Matthew Waters + + * sys/applemedia/corevideobuffer.c: + * sys/applemedia/iosurfaceglmemory.c: + * sys/applemedia/iosurfaceglmemory.h: + * sys/applemedia/iosurfacememory.h: + * sys/applemedia/meson.build: + * sys/applemedia/videotexturecache-gl.m: + applemedia: rename IOSurfaceMemory -> IOSurfaceGLMemory + +2019-08-28 18:59:35 +1000 Matthew Waters + + * sys/applemedia/avfvideosrc.m: + * sys/applemedia/corevideobuffer.c: + * sys/applemedia/meson.build: + * sys/applemedia/videotexturecache-gl.h: + * sys/applemedia/videotexturecache-gl.m: + * sys/applemedia/videotexturecache.h: + * sys/applemedia/videotexturecache.m: + * sys/applemedia/vtdec.c: + videotexturecache: implement GL specifics as a subclass + +2019-08-26 16:51:03 +1000 Matthew Waters + + * sys/applemedia/avfvideosrc.m: + * sys/applemedia/videotexturecache.h: + * sys/applemedia/videotexturecache.m: + * sys/applemedia/vtdec.c: + applemedia/videocache: make a GObject subclass + +2019-08-28 20:09:39 +1000 Matthew Waters + + * sys/applemedia/avfvideosrc.m: + avfvideosrc: don't leak texture caches + If decide_allocation is called multiple times, then we would continually + overwrite the previous cache without freeing + +2019-12-05 22:06:41 -0600 Aaron Boxer + + * sys/d3d11/gstd3d11colorconvert.c: + * sys/d3d11/gstd3d11colorconverter.c: + * sys/d3d11/gstd3d11device.c: + * sys/d3d11/gstd3d11memory.c: + * sys/d3d11/gstd3d11shader.c: + * sys/d3d11/gstd3d11upload.c: + * sys/d3d11/gstd3d11utils.h: + * sys/d3d11/gstd3d11window.c: + d3d11: translate windows error codes to human readable strings + This will help with debugging. + +2019-09-16 13:15:59 -0400 Xavier Claessens + + * sys/magicleap/mlaudiosink.c: + mlaudiosink: Fix crash when stopping pipeline + This is a bug in LuminOS 0.97.0. + +2019-04-09 15:22:19 -0400 Xavier Claessens + + * sys/magicleap/meson.build: + * sys/magicleap/mlaudiosink.c: + * sys/magicleap/mlaudiosink.h: + * sys/magicleap/mlaudiowrapper.cpp: + * sys/magicleap/mlaudiowrapper.h: + * sys/magicleap/plugin.c: + * sys/meson.build: + Add mlaudiosink element + +2019-09-05 16:48:19 +0200 Stéphane Cerveau + + * ext/openh264/gstopenh264enc.cpp: + openh264enc: keep the headers + be able to resend the headers on demand after a key-unit request + +2019-12-05 21:22:18 +0200 Sebastian Dröge + + * sys/decklink/gstdecklink.cpp: + decklink: Return new references to the devices from get_devices() + Otherwise the caller will free the devices we store internally. + +2019-05-24 16:24:00 +0200 Stéphane Cerveau + + * ext/dash/gstdashdemux.c: + * ext/dash/gstdashdemux.h: + * ext/dash/gstmpdadaptationsetnode.c: + * ext/dash/gstmpdadaptationsetnode.h: + * ext/dash/gstmpdbaseurlnode.c: + * ext/dash/gstmpdbaseurlnode.h: + * ext/dash/gstmpdclient.c: + * ext/dash/gstmpdclient.h: + * ext/dash/gstmpdcontentcomponentnode.c: + * ext/dash/gstmpdcontentcomponentnode.h: + * ext/dash/gstmpdhelper.c: + * ext/dash/gstmpdhelper.h: + * ext/dash/gstmpdmetricsnode.c: + * ext/dash/gstmpdmetricsnode.h: + * ext/dash/gstmpdmetricsrangenode.c: + * ext/dash/gstmpdmetricsrangenode.h: + * ext/dash/gstmpdparser.c: + * ext/dash/gstmpdparser.h: + * ext/dash/gstmpdperiodnode.c: + * ext/dash/gstmpdperiodnode.h: + * ext/dash/gstmpdprograminformationnode.c: + * ext/dash/gstmpdprograminformationnode.h: + * ext/dash/gstmpdrepresentationnode.c: + * ext/dash/gstmpdrepresentationnode.h: + * ext/dash/gstmpdrootnode.c: + * ext/dash/gstmpdrootnode.h: + * ext/dash/gstmpdsegmentlistnode.c: + * ext/dash/gstmpdsegmentlistnode.h: + * ext/dash/gstmpdsegmenttemplatenode.c: + * ext/dash/gstmpdsegmenttemplatenode.h: + * ext/dash/gstmpdsegmenttimelinenode.c: + * ext/dash/gstmpdsegmenttimelinenode.h: + * ext/dash/gstmpdsegmenturlnode.c: + * ext/dash/gstmpdsegmenturlnode.h: + * ext/dash/gstmpdsnode.c: + * ext/dash/gstmpdsnode.h: + * ext/dash/gstmpdsubrepresentationnode.c: + * ext/dash/gstmpdsubrepresentationnode.h: + * ext/dash/gstmpdsubsetnode.c: + * ext/dash/gstmpdsubsetnode.h: + * ext/dash/gstmpdutctimingnode.c: + * ext/dash/gstmpdutctimingnode.h: + * ext/dash/meson.build: + * tests/check/elements/dash_mpd.c: + dash: move parser nodes/types to separated files + Rename GstMpdClient to GstMPDClient and use GObject model. + Move nodes to file from gstmpdparser.c: + - GstMPDRootNode + - GstMPDBaseURLNode + - GstMPDUTCTimingNode + - GstMPDMetricsNode + - GstMPDMetricsRangeNode + - GstMPDSNode + - GstMPDSegmentTimelineNode + - GstSegmentTemplateNode + - GstMPDSegmentURLNode + - GstMPDSegmentListNode + - GstMPDPeriodNode + - GstMPDRepresentationNode + - GstMPDsubRepresentationNode + - GstMPDAdaptationSetNode + - GstMPDContentComponentNode + - GstMPDSubsetNode + - GstMPDProgramInformationNode + Move types to gstmpdhelper from gstmpdparser.c: + - GstURLType + - GstDescriptorType + - GstSegmentBaseType + - GstMPDMultSegmentBaseType + - GstMPDRepresentationBaseType + Cleanup naming when possible. + +2019-05-20 18:48:23 +0200 Stéphane Cerveau + + * ext/dash/gstdashdemux.c: + * ext/dash/gstdashdemux.h: + * ext/dash/gstmpdclient.c: + * ext/dash/gstmpdclient.h: + * ext/dash/gstmpdhelper.c: + * ext/dash/gstmpdhelper.h: + * ext/dash/gstmpdparser.c: + * ext/dash/gstmpdparser.h: + * ext/dash/gstxmlhelper.c: + * ext/dash/gstxmlhelper.h: + * ext/dash/meson.build: + * tests/check/elements/dash_mpd.c: + dash: split mpdparser, mpdclient and xmlhelper + provide a separate namespace for mpd helper + for xml parsing and the real mpd parsing. + +2019-12-04 15:33:42 +0900 Seungha Yang + + * sys/d3dvideosink/d3dhelpers.c: + d3dvideosink: Fix warning for unhandled enum in switch + d3dhelpers.c:135:3: warning: enumeration value 'D3DFMT_D32_LOCKABLE' not handled in switch [-Wswitch] + +2019-12-04 19:29:38 +1100 Matthew Waters + + * ext/vulkan/vkviewconvert.c: + vulkanviewconvert: clear the cached uniforms on caps change + Caps changes can change the output/input layout which needs to be + reflected in the input uniforms to the shader. + +2019-12-05 00:53:40 +0900 Seungha Yang + + * sys/d3d11/gstd3d11device.c: + * sys/d3d11/gstd3d11format.c: + * sys/d3d11/gstd3d11utils.c: + * sys/d3d11/plugin.c: + d3d11: Initialize debug categories of non-GstElement implementation in plugin init + That's the way to expose debug category to --gst-debug-help + +2019-12-04 23:23:09 +0900 Seungha Yang + + * sys/d3d11/gstd3d11window.c: + d3d11window: Invoke resize task with high priority + On resize event, swapchain should be configured with higher priority + than the other tasks since it's directly related to visual artifacts. + +2019-12-04 23:20:39 +0900 Seungha Yang + + * sys/d3d11/gstd3d11device.c: + * sys/d3d11/gstd3d11device.h: + d3d11device: Add gst_d3d11_device_thread_add_full method + I would be used to invoke GPU task with specified priority. + +2019-12-04 14:15:19 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosinkbin.c: + * sys/d3d11/gstd3d11videosinkbin.h: + d3d11videosinkbin: Drop d3d11 color convert element + d3d11videosink can convert color space now, so the conversion element + seems to be redundant. + +2019-12-03 22:54:26 +0900 Seungha Yang + + * sys/d3d11/gstd3d11colorconverter.c: + * sys/d3d11/gstd3d11colorconverter.h: + * sys/d3d11/gstd3d11videosink.c: + * sys/d3d11/gstd3d11videosink.h: + * sys/d3d11/gstd3d11window.c: + * sys/d3d11/gstd3d11window.h: + d3d11videosink: Add color conversion support + Draw to back buffer texture directly. It would reduce the number of + copy at least once when color conversion is required. + +2019-12-03 22:29:27 +0900 Seungha Yang + + * sys/d3d11/gstd3d11colorconvert.c: + d3d11converter: Skip setup converter if input and output formats are equal + +2019-12-03 20:35:06 +0900 Seungha Yang + + * sys/d3d11/gstd3d11_fwd.h: + * sys/d3d11/gstd3d11colorconvert.c: + * sys/d3d11/gstd3d11colorconvert.h: + * sys/d3d11/gstd3d11colorconverter.c: + * sys/d3d11/gstd3d11colorconverter.h: + * sys/d3d11/gstd3d11utils.c: + * sys/d3d11/gstd3d11utils.h: + * sys/d3d11/meson.build: + * sys/d3d11/plugin.c: + d3d11colorconvert: Split color space converter to reuse code + +2019-12-02 20:24:05 +0900 Seungha Yang + + * sys/d3d11/gstd3d11colorconvert.c: + * sys/d3d11/gstd3d11colorconvert.h: + * sys/d3d11/gstd3d11shader.c: + * sys/d3d11/gstd3d11shader.h: + * sys/d3d11/meson.build: + * sys/d3d11/plugin.c: + d3d11: Split shader to reuse code + +2019-12-02 23:27:42 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.c: + * sys/d3d11/gstd3d11videosink.h: + * sys/d3d11/gstd3d11window.c: + * sys/d3d11/gstd3d11window.h: + d3d11videosink: Draw window with cached texture on resize + This would render nicer than presenting scene with broken aspect ratio, + especially in case of low framerate. + +2019-11-30 20:26:26 +0900 Seungha Yang + + * sys/d3d11/gstd3d11bufferpool.c: + * sys/d3d11/gstd3d11colorconvert.c: + * sys/d3d11/gstd3d11memory.c: + * sys/d3d11/gstd3d11memory.h: + * sys/d3d11/gstd3d11upload.c: + * sys/d3d11/gstd3d11utils.c: + * sys/d3d11/gstd3d11utils.h: + * sys/d3d11/gstd3d11videosink.c: + d3d11: Add support for D3D11_USAGE_DYNAMIC + D3D11 dynamic texture is a special memory type, which is mainly used for + frequent CPU write access to the texture. For now, this texture type + does not support gst_memory_{map,unmap} + +2019-12-02 14:23:10 +0900 Seungha Yang + + * sys/d3d11/gstd3d11device.c: + d3d11device: Add debug message for CreateTexture2D failure + +2019-12-02 14:03:04 +0900 Seungha Yang + + * sys/d3d11/gstd3d11device.c: + d3d11device: Fix misreading debug message + +2019-12-01 16:13:38 +0900 Seungha Yang + + * sys/d3d11/gstd3d11colorconvert.c: + * sys/d3d11/gstd3d11colorconvert.h: + d3d11colorconvert: Disable color conversion with software rasterizer + It's much slower than our CPU based color-converter in most case. + +2019-07-18 23:12:13 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.c: + d3d11videosink: Handle context query + Propagate d3d11device via context query. + +2019-10-06 21:59:54 +0900 Seungha Yang + + * sys/d3d11/gstd3d11colorconvert.c: + d3d11colorconvert: Avoid copy in/out texture if possible + When input and/or output d3d11memory has its own view, use them for + rendering to avoid texture copy + +2019-10-06 21:35:48 +0900 Seungha Yang + + * sys/d3d11/gstd3d11memory.c: + * sys/d3d11/gstd3d11memory.h: + d3d11memory: Allocate texture with required views + Store required resource views with d3d11 texture when it requested. + +2019-11-06 19:39:09 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosinkbin.c: + * sys/d3d11/gstd3d11videosinkbin.h: + * sys/d3d11/meson.build: + * sys/d3d11/plugin.c: + d3d11: Add d3d11videosinkbin element + New wrapper element to support d3d11 memory upload, color conversion, and + rendering at once. + +2019-08-18 21:01:55 +0900 Seungha Yang + + * sys/d3d11/gstd3d11_fwd.h: + * sys/d3d11/gstd3d11colorconvert.c: + * sys/d3d11/gstd3d11colorconvert.h: + * sys/d3d11/meson.build: + * sys/d3d11/plugin.c: + d3d11: Add color space conversion element using shader + Add d3d11colorconvert element for color space conversion. + Currently {RGB, YUV} to RGB conversion is supported. + +2019-10-06 20:59:51 +0900 Seungha Yang + + * sys/d3d11/gstd3d11memory.c: + d3d11memory: Register mininal compare function for GstD3D11AllocationParams + The d3d11 allocation param is stored in GstStructure so it should + provide compare function for later use such as gst_structure_is_equal() + +2019-10-03 21:24:07 +0900 Seungha Yang + + * sys/d3d11/gstd3d11window.c: + d3d11window: Set render target whenever drawing + Device context's render target might be updated for offscreen rendering + +2019-08-24 17:43:43 +0900 Seungha Yang + + * sys/d3d11/gstd3d11format.c: + * sys/d3d11/gstd3d11videosink.c: + d3d11videosink: Specify d3d11 memory caps feature on sinkpad template + +2019-11-06 19:38:31 +0900 Seungha Yang + + * sys/d3d11/gstd3d11_fwd.h: + * sys/d3d11/gstd3d11basefilter.c: + * sys/d3d11/gstd3d11basefilter.h: + * sys/d3d11/gstd3d11download.c: + * sys/d3d11/gstd3d11download.h: + * sys/d3d11/gstd3d11upload.c: + * sys/d3d11/gstd3d11upload.h: + * sys/d3d11/meson.build: + * sys/d3d11/plugin.c: + d3d11: Introduce d3d11 upload/download element + That's equivalent to glupload and gldownload elements but for d3d11 + +2019-11-06 19:37:33 +0900 Seungha Yang + + * sys/d3d11/gstd3d11_fwd.h: + * sys/d3d11/gstd3d11bufferpool.c: + * sys/d3d11/gstd3d11bufferpool.h: + * sys/d3d11/gstd3d11format.c: + * sys/d3d11/gstd3d11format.h: + * sys/d3d11/gstd3d11memory.c: + * sys/d3d11/gstd3d11memory.h: + * sys/d3d11/gstd3d11utils.c: + * sys/d3d11/gstd3d11utils.h: + * sys/d3d11/gstd3d11videosink.c: + * sys/d3d11/meson.build: + d3d11: Refactor d3d11 memory and dxgi format usage + * Create staging texture only when the CPU access is requested. + Note that we should avoid the CPU access to d3d11 memory as mush as possible. + Incoming d3d11upload and d3d11download will take this GPU memory upload/download. + * Upload/Download texture memory from/to staging only if it needed, similar to + GstGL PBO implementation. + * Define more dxgi formats for future usage (e.g., color conversion, dxva2 decoder). + Because I420_* formats are not supported formats by dxgi, each plane should + be handled likewise GstGL separately, but NV12/P10 formats might be supported ones. + So we decide the number of d3d11memory per GstBuffer for video memory depending on + OS version and dxgi format. For instance, if NV12 is supported by OS, + only one d3d11memory with DXGI_FORMAT_NV12 texture can be allocated by this commit. + One use case of such texture is DXVA. In case DXVA decoder, it might need to produce decoded data + to one DXGI_FORMAT_NV12 instead of seperate Y and UV planes. + Such behavior will be controlled via configuration of GstD3D11BufferPool and + default configuration is separate resources per plane. + +2019-08-24 17:14:09 +0900 Seungha Yang + + * sys/d3d11/gstd3d11memory.c: + * sys/d3d11/gstd3d11memory.h: + d3d11: Add method for querying d3d11 memory type + ... and fix misreading "private" annotation. + +2019-09-25 20:34:10 +0900 Seungha Yang + + * sys/d3d11/gstd3d11device.c: + * sys/d3d11/gstd3d11device.h: + d3d11device: Store selected d3d feature level + Depending on selected feature level, d3d11 API usage can be different. + Instead of querying the selected feature level by user whenever required, + store it once by d3d11device. + +2019-08-23 21:41:39 +0900 Seungha Yang + + * sys/d3d11/gstd3d11device.c: + * sys/d3d11/gstd3d11device.h: + * sys/d3d11/gstd3d11utils.c: + * sys/d3d11/gstd3d11utils.h: + * sys/d3d11/gstd3d11videosink.c: + d3d11: Don't share d3d11 device context unconditionally without checking adapter + Do not accept any GstD3D11Device context which has different adapter + index from the required one. For example, if a d3d11 element is expecting + d3d11 device with adapter 1 (i.e., the second GPU), any d3d11 device + context having different adapter could not be shared with + the d3d11 element. + +2019-09-24 20:32:47 +0900 Seungha Yang + + * sys/d3d11/gstd3d11device.c: + * sys/d3d11/gstd3d11device.h: + d3d11device: Don't allow auto adapter selection + Change to d3d11device to be created with explicit target adapter index, + and expose some readonly device properties + +2019-08-18 20:56:06 +0900 Seungha Yang + + * sys/d3d11/gstd3d11device.c: + * sys/d3d11/gstd3d11device.h: + * sys/d3d11/gstd3d11memory.c: + * sys/d3d11/gstd3d11utils.c: + * sys/d3d11/gstd3d11videosink.c: + * sys/d3d11/gstd3d11window.c: + d3d11: Rename native handle getter and context utils functions + Make them consistent with cuda context utils functions. + Put in-only parameter before all in-out parameters, and add _handle() + suffix to native handle getter functions. + +2019-12-02 11:13:11 -0600 Aaron Boxer + + * sys/d3dvideosink/d3dhelpers.c: + d3dvideosink: use parent buffer pool to release buffers + In certain cases, the sink's buffer pool will not call the parent's + release_buffer method, so the pool does not clean up properly + after the buffer is released. + +2019-11-29 13:45:42 +1100 Matthew Waters + + * ext/vulkan/meson.build: + * ext/vulkan/vkcolorconvert.c: + * ext/vulkan/vkcolorconvert.h: + * ext/vulkan/vkelementutils.c: + * ext/vulkan/vkelementutils.h: + * ext/vulkan/vkimageidentity.c: + * ext/vulkan/vkimageidentity.h: + * ext/vulkan/vkshader.c: + * ext/vulkan/vkshader.h: + * ext/vulkan/vkviewconvert.c: + * ext/vulkan/vkviewconvert.h: + * gst-libs/gst/vulkan/gstvkfullscreenquad.c: + * gst-libs/gst/vulkan/gstvkfullscreenquad.h: + * gst-libs/gst/vulkan/gstvkutils.c: + * gst-libs/gst/vulkan/gstvkutils.h: + * gst-libs/gst/vulkan/meson.build: + * gst-libs/gst/vulkan/vulkan.h: + * gst-libs/gst/vulkan/vulkan_fwd.h: + * tests/check/libs/vkimage.c: + vulkan: move fullscreenquad object to library + It's useful and extensible enough to be used by us and other elements + +2019-11-29 11:05:50 +1100 Matthew Waters + + * gst-libs/gst/vulkan/gstvkimagememory.c: + * gst-libs/gst/vulkan/gstvkphysicaldevice.c: + * gst-libs/gst/vulkan/gstvktrash.c: + vulkan: fix up some gir annotations + +2019-12-03 15:45:26 +0200 Sebastian Dröge + + * gst/interlace/gstinterlace.c: + interlace: Store unsigned integers in unsigned integer types + And add some assertions to guard against overflows and out of bounds + reads. + +2019-12-03 15:35:57 +0200 Sebastian Dröge + + * gst/interlace/gstinterlace.c: + interlace: Increment phase_index before checking if we're at the end of the phase + Incrementing it afterwards will always have to phase_index >= 1 and we + will never be at the beginning (0) of the phase again, and thus never + reset timestamp tracking accordingly. + This was broken in bea13ef43b719aad96e28766cd4d23652a891a20 in 2010, and + causes interlace to run into integer overflows after 2^31 frames or + about 5 hours at 29.97fps. Due to usage of wrong types for the integers + this then causes negative numbers to be used in calculations and all + calculations spectacularly fail, leading to all following buffers to + have the timestamp of the first buffer minus one nanosecond. + +2019-11-27 15:38:50 +0100 Jan Alexander Steffens (heftig) + + * gst/rtmp2/gstrtmp2sink.c: + rtmp2sink: Only apply @setDataFrame to onMetaData messages + Only the metadata needs to be made "sticky". Custom data messages should + be passed on unmodified. + https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/merge_requests/878 + +2019-11-27 15:38:39 +0100 Jan Alexander Steffens (heftig) + + * gst/rtmp2/rtmp/rtmpmessage.c: + * gst/rtmp2/rtmp/rtmpmessage.h: + rtmp2: Add gst_rtmp_message_is_metadata + https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/merge_requests/878 + +2019-11-27 15:38:20 +0100 Jan Alexander Steffens (heftig) + + * gst/rtmp2/rtmp/rtmpconnection.c: + * gst/rtmp2/rtmp/rtmpconnection.h: + rtmp2: Add gst_rtmp_connection_set_data_frame + https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/merge_requests/878 + +2019-11-27 15:37:45 +0100 Jan Alexander Steffens (heftig) + + * gst/rtmp2/rtmp/amf.c: + * gst/rtmp2/rtmp/amf.h: + rtmp2: Add single-value AMF0 parsing and serializing + https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/merge_requests/878 + +2019-11-27 15:36:07 +0100 Jan Alexander Steffens (heftig) + + * gst/rtmp2/rtmp/amf.c: + * gst/rtmp2/rtmp/rtmpconnection.c: + rtmp2: Minor changes + - Remove an unneeded initialization to zero from AmfParser + - Add missing initialization to gst_amf_serialize_command_valist + - Add a g_return_if_fail to gst_rtmp_connection_request_window_size + https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/merge_requests/878 + +2019-12-03 14:19:05 +1100 Matthew Waters + + * meson.build: + build: use -fvisibility=hidden for objc code + +2019-12-03 14:18:49 +1100 Matthew Waters + + * gst-libs/gst/vulkan/cocoa/gstvkcocoa_utils.h: + * gst-libs/gst/vulkan/ios/gstvkios_utils.h: + vulkan: priviatise _invoke_on_main() + https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1132 + +2019-11-21 16:59:29 +0200 Sebastian Dröge + + * sys/decklink/gstdecklink.cpp: + * sys/decklink/gstdecklink.h: + * sys/decklink/gstdecklinkdeviceprovider.cpp: + * sys/decklink/gstdecklinkdeviceprovider.h: + * sys/decklink/meson.build: + decklink: Add simple device provider for Decklink devices + +2019-12-01 17:04:05 +0530 Nirbheek Chauhan + + * ext/openexr/meson.build: + openexr: Fix check for when to pass -std=c++98 + commit 6adfb120ab0e1bb0b3439ad725a362cfe4fbe733 added this flag to fix + builds with `-Werror`, and afterwards it was changed to use a version + check when newer versions of openexr moved over to C++11. + However, some distros have backported patches to older openexr + versions which make it require C++11, which makes the version check + incorrect and causes an error because we passed `-Werror -std=c++98`. + Instead, directly check when usage of the header requires `-std=c++98` + with `-Werror` and override the `cpp_std` setting on the target. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1117 + +2019-11-30 14:08:06 +0100 o0Ignition0o + + * sys/applemedia/avfvideosrc.m: + avfvideosrc: Explicitly request device video permissions for macOS 10.14+ + Since macOS Mojave (10.14), video permissions have to be explicitly + granted by a user in order to open a video device such as a camera. + This commit adds a check for the current permission status, and tries + to request for permission if applicable. + +2019-11-27 00:25:16 +1100 Matthew Waters + + * ext/vulkan/vkcolorconvert.c: + * ext/vulkan/vkdownload.c: + * ext/vulkan/vkfullscreenquad.c: + * ext/vulkan/vkupload.c: + * ext/vulkan/vkviewconvert.c: + * gst-libs/gst/vulkan/gstvkdescriptorcache-private.h: + * gst-libs/gst/vulkan/gstvkdescriptorcache.c: + * gst-libs/gst/vulkan/gstvkdescriptorcache.h: + * gst-libs/gst/vulkan/gstvkdescriptorpool.h: + * gst-libs/gst/vulkan/gstvkdescriptorset.c: + * gst-libs/gst/vulkan/gstvkdevice.c: + * gst-libs/gst/vulkan/gstvkdevice.h: + * gst-libs/gst/vulkan/gstvkfence.c: + * gst-libs/gst/vulkan/gstvkfence.h: + * gst-libs/gst/vulkan/gstvkhandlepool.c: + * gst-libs/gst/vulkan/gstvkhandlepool.h: + * gst-libs/gst/vulkan/gstvkswapper.c: + * gst-libs/gst/vulkan/gstvktrash.c: + * gst-libs/gst/vulkan/gstvktrash.h: + * gst-libs/gst/vulkan/meson.build: + * gst-libs/gst/vulkan/vulkan.h: + * gst-libs/gst/vulkan/vulkan_fwd.h: + * meson.build: + * meson_options.txt: + vulkan: implement caching and reuse of a couple of vulkan resources + Includes a new GstVulkanHandlePool base class for pooling different + resources togther. The descriptor cache object is ported to + GstVulkanHandlePool with the exact same functionality. + A new GstVulkanFenceCache is also implemented for caching fences + which is used internally by GstVulkanDevice for creating or reusing + fences. + The existing GstVulkanTrashFenceList object now caches trash objects. + +2019-11-26 18:29:14 +1100 Matthew Waters + + * gst-libs/gst/vulkan/gstvktrash.c: + * gst-libs/gst/vulkan/gstvktrash.h: + vulkan/trash: remove free functions covered by GstVulkanHandle + +2019-11-26 18:27:04 +1100 Matthew Waters + + * ext/vulkan/vkcolorconvert.c: + vulkancolorconvert: disable YUY2 conversion + It doesn't work and never seemed to + +2019-11-26 18:11:25 +1100 Matthew Waters + + * ext/vulkan/meson.build: + * ext/vulkan/shaders/ayuv_to_rgb.frag: + * ext/vulkan/shaders/identity.frag: + * ext/vulkan/shaders/nv12_to_rgb.frag: + * ext/vulkan/shaders/rgb_to_ayuv.frag: + * ext/vulkan/shaders/rgb_to_nv12.frag: + * ext/vulkan/shaders/rgb_to_yuy2.frag: + * ext/vulkan/shaders/swizzle.frag: + * ext/vulkan/shaders/swizzle_and_clobber_alpha.frag: + * ext/vulkan/shaders/uyvy_to_rgb.frag: + * ext/vulkan/shaders/view_convert.frag: + * ext/vulkan/shaders/yuy2_to_rgb.frag: + * ext/vulkan/vkcolorconvert.c: + * ext/vulkan/vkcolorconvert.h: + * ext/vulkan/vkfullscreenquad.c: + * ext/vulkan/vkfullscreenquad.h: + * ext/vulkan/vkfullscreenrender.c: + * ext/vulkan/vkfullscreenrender.h: + * ext/vulkan/vkimageidentity.c: + * ext/vulkan/vkimageidentity.h: + * ext/vulkan/vkshader.c: + * ext/vulkan/vkshader.h: + * ext/vulkan/vkviewconvert.c: + * ext/vulkan/vkviewconvert.h: + * gst-libs/gst/vulkan/gstvkvideofilter.c: + * gst-libs/gst/vulkan/gstvkvideofilter.h: + * gst-libs/gst/vulkan/meson.build: + * gst-libs/gst/vulkan/vulkan.h: + vulkan: split vkfullscreenrender into two + Part 1 is a base class (vkvideofilter) that handles instance, device, + queue retrieval and holding that has been moved to the library + Part 2 is a fullscreenrenderquad that is still in the plugin that + performs all of the previous vulkan-specific functionality. + +2019-11-26 16:26:41 +1100 Matthew Waters + + * ext/vulkan/vkupload.c: + vulkan/upload: allocate from the correct pool + Only relevant when upstream does not use our provided pool. + +2019-11-26 16:25:43 +1100 Matthew Waters + + * gst-libs/gst/vulkan/gstvkhandle.c: + * gst-libs/gst/vulkan/gstvkhandle.h: + vulkan/handle: add some handle types + +2019-11-18 20:29:10 +1100 Matthew Waters + + * gst-libs/gst/vulkan/gstvkimagememory.c: + * gst-libs/gst/vulkan/gstvkimagememory.h: + * gst-libs/gst/vulkan/gstvkimageview.c: + * tests/check/libs/vkimage.c: + * tests/check/meson.build: + vulkan/image: don't rely on weak-ref notifies for views + Weak refs don't quite work here correctly as there is always a race with + taking the lock between find_view() and remove_view(). If find_view() + returns a view that is going to removed by remove_view() then we have an + interesting situation. + In theory, the number and type of views for an image are relatively + constant and should not change one they've been set up which means that + it is actually practical to perform pool-like reference counting here + where the image holds a pool of different views that it can give out + as necessary. + +2019-11-18 15:20:18 +1100 Matthew Waters + + * ext/vulkan/vkupload.c: + * gst-libs/gst/vulkan/gstvkswapper.c: + vulkan: add a couple of missing fence unrefs + +2019-10-04 16:05:05 +1000 Matthew Waters + + * ext/vulkan/vkcolorconvert.c: + vulkan/colorconvert: zero out sampler create struct + +2019-11-26 11:39:32 +0530 Nirbheek Chauhan + + * sys/wasapi/gstwasapisrc.c: + wasapisrc: Correctly handle BUFFERFLAGS_SILENT + We need to ignore the data we get from WASAPI in this case and write + out silence (zeroes). + Initially reported at https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/808 + +2019-11-25 21:25:43 +0530 Nirbheek Chauhan + + * sys/wasapi/gstwasapisrc.c: + wasapisrc: Try harder to avoid debug output in the hot loop + The whole `src_read()` function is a hot loop since the ringbuffer + thread is waiting on us, and printing to the console from inside it + can easily cause us to miss our deadline. + F.ex., if you had GST_DEBUG=3 and we accidentally missed a device + period, we'd trigger the "reported glitch" warning, which would cause + us to miss another device period, and so on. Let's reduce the log + level so that GST_DEBUG=3 is more usable, and only print buffer flag + info when it's actually relevant. + +2019-11-25 21:19:59 +0530 Nirbheek Chauhan + + * sys/wasapi/gstwasapisrc.c: + * sys/wasapi/gstwasapisrc.h: + wasapisrc: Fix capturing from some buggy audio drivers + Some audio drivers return varying amounts of data per ::GetBuffer + call, instead of following the device period that they've told us + about in `src_prepare()`. + Previously, we would just drop those extra buffers hoping that the + extra buffers were temporary (f.ex., a startup 'burst' of audio data). + However, it seems that some audio drivers, particularly on older + Windows versions (such as Windows 10 1703 and older) consistently + return varying amounts of data. + Use GstAdapter to smooth that out, and hope that the audio driver is + locally varying but globally periodic. + Initially reported in https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/808 + +2019-11-25 21:16:05 +0530 Nirbheek Chauhan + + * sys/wasapi/gstwasapisrc.c: + wasapisrc: Clarify that nBlockAlign is actually bpf + bpf = bytes per frame. + +2019-11-25 21:00:14 +0530 Nirbheek Chauhan + + * sys/wasapi/gstwasapiutil.c: + wasapisrc: Fix glitching and clock skew issues + We were miscalculating the device period, i.e. the number of frames + we'll get from WASAPI in each IAudioClient::GetBuffer call, due to + a calculation mistake (truncate instead of round). + For example, on my machine when the aux input is set to 44.1KHz, the + reported device period is 101587, which comes out to 447.998 frames + per ::GetBuffer call. In reality we will, of course, get 448 frames + per call, but we were truncating, so we expected 447 and were + discarding one frame every time. This led to glitching, and skew over + time. + Interestingly, I can only see this with 44.1Khz. 48Khz/96Khz are fine, + because the device period is a more 'even' number. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/806 + +2019-11-27 15:41:26 +0100 Edward Hervey + + * gst/mpegtsmux/gstatscmux.c: + atscmux: Add missing break in switch + CID: 1455515 + +2019-11-27 12:24:46 +0900 Seungha Yang + + * sys/msdk/msdk.c: + msdk: Fix mixed declarations warning + msdk.c:194:3: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] + +2019-11-26 13:05:38 -0500 Aaron Boxer + + * gst/videoparsers/gsth264parse.c: + h264parse: buffer mismatch in map/unmap + +2019-11-19 15:35:20 -0800 Julien Isorce + + * sys/msdk/gstmsdkdec.c: + msdkdec: log an error if leaking surfaces in finalize + The for loop in gst_msdkdec_handle_frame is error prone + about how it manages surfaces. Because sometimes it sets + the surface variable to NULL and sometimes it needs to free + it right away. So better to print an error if surfaces are + leaked to help with any change around the loop. + +2019-11-25 19:08:48 +0800 Jeffy Chen + + * ext/wayland/wlwindow.c: + waylandsink: Commit the parent after creating subsurface + We should commit the parent to activate new subsurface, this is + documented in the protocol. + Signed-off-by: Jeffy Chen + +2018-07-20 21:33:24 +0900 Seungha Yang + + * ext/ttml/gstttmlparse.c: + * ext/ttml/ttmlparse.c: + * ext/ttml/ttmlparse.h: + ttmlparse: Collect buffers until detecting complete xml document + Given buffer could be fragmented and we might need to + collect buffers until end tag is detected. And/or, a buffer + can consist of multiple ttml documents. + Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/494 + +2019-11-20 13:19:02 -0600 Aaron Boxer + + * sys/msdk/msdk.c: + msdk: query hardware when checking MFX availability + msdk plugin is not used for sofware encode/decode as there are better + solutions available. Also, with MFX_IMPL_AUTO_ANY, if software decode + is not supported, the plugin will still load, but will then fail when trying to + run the (autoplugged) pipeline. With MFX_IMPL_HARDWARE_ANY, + the plugin fails and a better software decoder is auto-plugged. + +2019-11-20 13:09:34 -0600 Aaron Boxer + + * sys/msdk/msdk.c: + msdk: query platform when opening session + +2019-11-14 19:00:51 +0900 Seungha Yang + + * sys/nvcodec/gstnvbaseenc.c: + * sys/nvcodec/gstnvbaseenc.h: + nvenc: Fix crash when nvenc was reused then freed without encoding + GstNvBaseEnc::n_bufs was set from the previous encoding session + but it wasn't cleared after stop. That might result to invalid memory + access at the next start (no encoded data) and then stop sequence. + Instead of defining a variable for array length, use GArray::len + directly to avoid such confusion. + +2019-11-14 18:57:14 +0900 Seungha Yang + + * sys/nvcodec/gstnvbaseenc.c: + nvenc: Remove unused code path + refilling queue would not happen + +2019-11-21 16:38:35 +0100 Edward Hervey + + * ext/webrtc/webrtcdatachannel.c: + webrtcdatachannels: Don't leak strings + They would leak in error cases + CID: 1455480 + +2019-11-21 16:24:38 +0100 Edward Hervey + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Fix memory leak + The structure is not used after this block + CID: 1455481 + +2019-11-19 19:29:26 -0800 Thiago Santos + + * gst-libs/gst/adaptivedemux/gstadaptivedemux.c: + adaptivedemux: fix 'utc now' gdatetime creation + It broke after removal of usage of GTimeVal that was deprecated, + it requires seconds in this unix-based creation instead of microseconds. + The downside here is that it will create an extra object just to be + discarded in order to add the microsecond part to it. + It would end up segfaulting as it would return a NULL value + +2019-11-18 16:15:21 +0100 Jakub Adam + + * ext/srt/gstsrtobject.c: + srtobject: allow passing SRT Stream ID in stream URI + Based on Stream ID, the application can accept or reject the connection, + select the desired data stream, or set an appropriate passphrase for the + connection. Example usage: + srt://127.0.0.1:1234?streamid=mystream + +2019-11-20 11:34:15 +0100 Linus Svensson + + * ext/curl/meson.build: + curl: Require libcurl 7.55.0 + CURLINFO_CONTENT_LENGTH_DOWNLOAD_T is available from libcurl version + 7.55.0. + +2019-11-18 14:26:31 -0800 Julien Isorce + + * sys/msdk/gstmsdkdec.c: + msdkdec: fix surface leak in msdkdec_handle_frame + Can be reproduced with: + videotestsrc ! x264enc key-int-max=$N ! \ + h264parse ! msdkh264dec ! fakesink sync=1 + It happens with any gop size but the smaller is the distance N + between key frames, the quicker it is leaking. + Fixes #1023 + +2019-11-18 15:54:42 -0500 Xavier Claessens + + * ext/dash/meson.build: + dash: Fix typo in meson.build + +2019-11-01 15:58:47 -0700 Ederson de Souza + + * ext/avtp/gstavtpcvfdepay.c: + * tests/check/elements/avtpcvfdepay.c: + avtpcvfdepay: Don't hide gst_pad_push return + avtpcvfdepay was effectively hiding any return from gst_pad_push, so no + errors or GST_FLOW_EOS would be propagated upstream. + Tests also added. + +2019-11-01 15:39:25 -0700 Ederson de Souza + + * ext/avtp/gstavtpcvfpay.c: + * tests/check/elements/avtpcvfpay.c: + avtpcvfpay: Do not hide or modify gst_pad_push errors + Current code would change any non-ok return from gst_pad_push to + GST_FLOW_ERROR, thus hiding meaningful returns such as GST_FLOW_EOS. + Tests also added. + +2019-10-30 15:24:40 -0700 Ederson de Souza + + * ext/avtp/gstavtpcvfdepay.c: + avtpcvfdepay: Tone down some log messages + Most of avtpcvfdepay messages are currently logged as warnings, which can + make some scenarios - such as receiving two AVTP streams on the same + pipeline - too verbose. + This patch tones those message down to INFO or DEBUG level - more in + sync with avtpaafdepay logging. + +2019-11-18 15:42:35 +0100 Marc Leeman + + * gst/rtp/gstrtpsink.c: + * gst/rtp/gstrtpsink.h: + * gst/rtp/gstrtpsrc.c: + * gst/rtp/gstrtpsrc.h: + rtpmanagerbad: allow setting multicast-iface + Allowing the UDP elements to bind on an interface is needed in more + complex networks where there are mutiple networks interfaces without + default gateway + +2019-11-19 12:18:39 +0200 Sebastian Dröge + + * gst/timecode/gsttimecodestamper.c: + timecodestamper: Create LTC sink pad with the correct name according to the template + Should be "ltc_sink" and not just "ltc" + +2019-10-11 16:19:26 +0300 Vivia Nikolaidou + + * gst/videoparsers/gsth264parse.c: + * gst/videoparsers/gsth265parse.c: + * gst/videoparsers/gstmpeg4videoparse.c: + * gst/videoparsers/gstmpegvideoparse.c: + * gst/videoparsers/gstvc1parse.c: + videoparsers: Disable gst_base_parse_set_infer_ts + From the documentation of gst_base_parse_set_infer_ts, it should be + disabled for non-audio data. Currently just disabling for all video + parsers that have reordered data: h264, h265, mpeg, mpeg4, vc1. Was + already disabled in h263. + +2019-11-18 23:38:49 +0100 Andrew Branson + + * sys/androidmedia/gst-android-hardware-camera.c: + * sys/androidmedia/gst-android-hardware-camera.h: + androidmedia: Add new effects and scene modes to Camera parameters + +2019-10-10 18:18:26 +0200 Andrew Branson + + * gst-libs/gst/interfaces/photography.c: + * gst-libs/gst/interfaces/photography.h: + * tests/check/elements/camerabin.c: + photography: Add additional settings relevant to Android + Exposure mode property, extra colour tone values (aqua, emboss, sketch, neon), extra scene modes (backlight, flowers, AR, HDR). + Missing vmethods for exposure mode, analog gain, lens focus, colour temperature, min & max exposure time + Contribs by Mohammed Sameer , Adam Pigg + +2019-09-05 03:16:28 +0200 Kyrylo Polezhaiev + + * gst/mpegtsmux/tsmux/tsmux.c: + tsmux: Fix copying of buffer region + +2019-11-15 13:12:48 -0600 Aaron Boxer + + * sys/d3dvideosink/gstd3d9overlay.c: + d3dvideosink: use sink dimensions when calculating overlay scaling + +2019-11-14 22:06:09 -0500 Aaron Boxer + + * sys/d3dvideosink/d3dvideosink.c: + d3dvideosink: use explicit system memory feature in overlay composition caps + +2019-11-05 13:46:59 +0100 Jochen Henneberg + + * sys/msdk/meson.build: + msdk: Fixes for meson include directory setup + In case of pkg-config we need to create the include directories object + from the path using include_directories(). For INTELMEDIASDKROOT or + MFX_HOME we need to add the alternate include path ./include/mfx as + Intel MediaSDK now puts the headers there. + +2019-09-23 10:30:40 +0200 Marc Leeman + + * gst/rtp/gstrtpsink.c: + * gst/rtp/gstrtpsrc.c: + rtpmanagerbad: name the element children + As discussed with RIST, it is best to name the children of the elements + since these are now created at the element initialisation. + +2019-05-24 17:33:33 +0100 Alex Ashley + + * ext/curl/gstcurlhttpsrc.c: + * ext/curl/gstcurlhttpsrc.h: + * tests/check/elements/curlhttpsrc.c: + curlhttpsrc: add support for range GET + To allow curlhttpsrc to support DASH streams that use the on-demand + profile, it needs to support HTTP Range GETs. In GStreamer, the RANGE + is specified by issuing a GST_FORMAT_BYTES seek to set the start and + end of the range. curlhttpsrc needs to implement seek and set the + appropriate curl options to make it add the Range header to the + request. + +2019-10-11 17:25:04 +0300 Vivia Nikolaidou + + * gst/mpegtsdemux/tsdemux.c: + tsdemux: Always issue a DTS even when it's equal to PTS + Currently tsdemux timestamps only the PTS, and only issues the DTS if + it's different. In that case, parsers tend to estimate the next DTS + based on the previous DTS and the duration, which can accumulate + rounding errors. + +2019-11-14 10:00:35 +1100 Matthew Waters + + * ext/vulkan/vkdownload.c: + * ext/vulkan/vkfullscreenrender.c: + * ext/vulkan/vkupload.c: + * gst-libs/gst/vulkan/gstvkqueue.c: + * gst-libs/gst/vulkan/gstvkqueue.h: + * gst-libs/gst/vulkan/gstvkswapper.c: + * gst-libs/gst/vulkan/vulkan_fwd.h: + vulkan/queue: be sure to take a lock around command submission + This ensures that only one thread is submitting commands at a time as + required by the Vulkan specification. + +2019-11-14 09:56:49 +1100 Matthew Waters + + * ext/vulkan/vkfullscreenrender.c: + vulkan/render: fix indent command comment typo + +2019-11-13 20:17:48 +0900 Seungha Yang + + * sys/d3d11/gstd3d11window.c: + d3d11window: Fix subclass procedure recursion + subclass window precedure should be cleared if it's no more used. + Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1115 + +2019-11-13 12:14:02 +1100 Matthew Waters + + * ext/vulkan/vkfullscreenrender.c: + * ext/vulkan/vkimageidentity.c: + vulkan: NULL check destruction of vulkan resources + If the element fails to start up, any number of vulkan resources could + have not been created. + +2019-11-13 12:07:45 +1100 Matthew Waters + + * ext/vulkan/vkcolorconvert.c: + * ext/vulkan/vkdownload.c: + * ext/vulkan/vkfullscreenrender.c: + * ext/vulkan/vkimageidentity.c: + * ext/vulkan/vkupload.c: + * ext/vulkan/vkviewconvert.c: + * gst-libs/gst/vulkan/gstvkswapper.c: + * gst-libs/gst/vulkan/gstvktrash.c: + vulkan: make new trash objects ref the fence + Avoids gst_vulkan_fence_ref at each call site of the trash object + creation + +2019-11-13 12:05:52 +1100 Matthew Waters + + * gst-libs/gst/vulkan/wayland/gstvkwindow_wayland.c: + vulkan/wayland: advertise the current surface size + Avoids vkswapper from creating a 0x0 output VkSurface and failing + +2019-11-12 22:06:45 +1100 Jan Schmidt + + * gst/switchbin/gstswitchbin.c: + switchbin: Free path objects on finalize + Clean up path objects nicely when shutting down, + first by dropping pointers to elements during dispose, + and then by making sure to drop the ref to the path object + when finalizing the switch bin. + Fixes valgrind checks in the unit test. + +2018-07-03 00:30:12 +1000 Jan Schmidt + + * tests/check/elements/switchbin.c: + * tests/check/meson.build: + switchbin: Add a basic unit-test + Test the basic function of a switchbin - that it correctly + selects between 2 processing paths based on caps + +2018-07-03 00:25:51 +1000 Jan Schmidt + + * gst/switchbin/gstswitchbin.c: + * gst/switchbin/gstswitchbin.h: + switchbin: Add current-path property + Returns the index of the currently selected processing + path, or MAX-UINT if none + +2019-11-05 01:40:10 +1100 Jan Schmidt + + * docs/plugins/gst_plugins_cache.json: + * gst/switchbin/gstswitchbin.c: + switchbin: Add docs + Add documentation clauses and enrol switchbin to generate + plugin docs + +2019-11-05 01:40:04 +1100 Jan Schmidt + + * gst/meson.build: + * gst/switchbin/gstswitchbin.c: + * gst/switchbin/gstswitchbin.h: + * gst/switchbin/meson.build: + * gst/switchbin/plugin.c: + * meson_options.txt: + switchbin: Initial checkin + Add code from Stream Unlimited implementing a bin + which switches between different internal decoding/processing + chains based on input caps + +2019-11-12 19:54:46 -0600 Aaron Boxer + + * sys/d3d11/gstd3d11window.c: + d3d11videosink: only destroy loop if external_win_id is false + Loop was created with this condition, so it should also be + destroyed under the same condition + +2019-09-06 19:13:46 +1000 Jan Schmidt + + * gst-libs/gst/opencv/meson.build: + * meson.build: + meson: Fix plugin symbol export for C++ sources/plugins + The symbol visibility=hidden flag was only being applied to C + compilation, so plugins implemented in C++ would leak extra symbols + than the 2 _get_desc() and _register(). + That also showed that the gst-libs opencv C++ lib was not marking + symbols for export correctly because the BUILDING_GST_OPENCV define + wasn't in the C++ args, so fix that too. + +2019-11-12 12:04:48 +0100 Jan Alexander Steffens (heftig) + + * gst/rtmp2/rtmp/rtmpmessage.c: + rtmp2: Fix NULL check in gst_rtmp_meta_transform + Coverity rightly complains that checking a pointer for NULL after + dereferencing it is pointless. + Remove the check, and to be safe, assert that gst_buffer_add_meta + returns non-NULL. + CID 1455485 + +2019-11-12 11:46:21 +0100 Jan Alexander Steffens (heftig) + + * gst/rtmp2/rtmp/rtmpchunkstream.c: + * gst/rtmp2/rtmp/rtmpconnection.c: + rtmp2: Check for missing GstRtmpMeta + The message buffers are created using `gst_rtmp_message_new` and thus + always contain a GstRtmpMeta. Add checks to appease Coverity's static + analysis. + CID 1455596 + CID 1455384 + +2019-11-12 12:31:48 +0200 Vivia Nikolaidou + + * gst/rtmp2/gstrtmp2sink.c: + rtmp2sink: Add a check that meta isn't NULL before accessing + It really can't be NULL, this is just to convince coverity + CID 1455553 + +2019-11-08 18:00:46 -0500 Nicolas Dufresne + + * sys/kms/gstkmssink.c: + kmssink: Do not drain if imported buffer are from KMS + This adds a check to avoid draining when the imported buffers are in + fact own by kmssink. This happens since we export our kms buffer as + DMABuf. They are not really imported back as we pre-fill the cache, + but uses the same format as if they were external. This fixes + performance issues seen with videocrop2-test (found in -good). + +2019-11-08 17:57:58 -0500 Nicolas Dufresne + + * sys/kms/gstkmssink.c: + * sys/kms/gstkmssink.h: + kmssink: Avoid drain on caps changes + Draining systematically on caps changes was a hack. Instead, properly + save the render information used to render last_render, and use that + information to drain. This fixes performance issues met with video crop + meta and per frame caps changes. + +2019-11-08 17:48:40 -0500 Nicolas Dufresne + + * sys/kms/gstkmssink.c: + kmssink: Ensure we have an allocator before importing + This fixes cases where the kms allocator API was called with a null + pointer. + +2019-07-12 20:39:45 -0400 Nicolas Dufresne + + * gst/videoparsers/gstvc1parse.c: + vc1parse: Avoid division by zero assertion + A framerate of 0/1 is valid, but we cannot calculate the frame duration + in this context. Simply protect against this case. + Related to #660 + +2018-02-17 19:38:22 -0500 Nicolas Dufresne + + * gst/videoparsers/gstvc1parse.c: + vc1parser: Relax ASF Binding Byte validation + According to the spec, the least significant bit is reserved and should + always we set to 1. Though, some wrong file has been found. Considering + how low important this reserved bit is, relax the validation. + Related to #660 + +2019-11-11 09:36:48 +0800 Fuwei Tang + + * gst-libs/gst/codecparsers/gstvc1parser.c: + vc1parser : fix a miswrite + +2019-11-11 10:50:58 +1100 Matthew Waters + + * gst-libs/gst/vulkan/gstvkhandle.h: + * gst-libs/gst/vulkan/gstvkswapper.c: + * gst-libs/gst/vulkan/gstvktrash.c: + vkhandle: expose a printf format specifier for a vulkan handle + +2019-11-11 10:33:23 +1100 Matthew Waters + + * gst-libs/gst/vulkan/gstvkdescriptorpool.c: + vkdescriptor: set the GError on the 'too many allocations' case + +2019-10-17 23:25:14 +1100 Matthew Waters + + * gst-libs/gst/vulkan/gstvkswapper.c: + vkswapper: add inherit support + Used on android + +2019-10-17 22:27:44 +1100 Matthew Waters + + * gst-libs/gst/vulkan/gstvkswapper.c: + vkswapper: output specific values when swapchain flags fail + +2019-10-16 17:17:51 +1100 Matthew Waters + + * gst-libs/gst/vulkan/android/gstvkdisplay_android.c: + * gst-libs/gst/vulkan/android/gstvkdisplay_android.h: + * gst-libs/gst/vulkan/android/gstvkwindow_android.c: + * gst-libs/gst/vulkan/android/gstvkwindow_android.h: + * gst-libs/gst/vulkan/gstvkconfig.h.meson: + * gst-libs/gst/vulkan/gstvkdisplay.c: + * gst-libs/gst/vulkan/gstvkdisplay.h: + * gst-libs/gst/vulkan/gstvkwindow.c: + * gst-libs/gst/vulkan/meson.build: + vulkan: add android WSI integration + +2019-11-10 18:31:49 +0530 Nirbheek Chauhan + + * gst-libs/gst/vulkan/ios/gstvkwindow_ios.m: + vulkan: Fix build on ios + These little bits were missed during the refactor in + https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/merge_requests/821 + +2019-10-24 15:27:42 -0400 Xavier Claessens + + * sys/androidmedia/gstamc.c: + * sys/androidmedia/meson.build: + amc: Change plugin name if it's built for Magic Leap + +2018-11-19 13:40:35 -0500 Xavier Claessens + + * meson_options.txt: + * sys/androidmedia/gstamc.c: + * sys/androidmedia/magicleap/gstamc-codec-ml.c: + * sys/androidmedia/magicleap/gstamc-codeclist-ml.c: + * sys/androidmedia/magicleap/gstamc-format-ml.c: + * sys/androidmedia/magicleap/gstamc-internal-ml.h: + * sys/androidmedia/magicleap/gstamc-surfacetexture-ml.c: + * sys/androidmedia/magicleap/gstamc-surfacetexture-ml.h: + * sys/androidmedia/meson.build: + amc: Add MLSDK implementation + +2019-11-08 23:42:08 +0900 Seungha Yang + + * gst-libs/gst/vulkan/win32/gstvkwindow_win32.c: + vulkan: Fix build on Windows + gstvkwindow_win32.c(166): error C2065: 'msg_source': undeclared identifier + +2019-11-06 15:07:44 +0100 Edward Hervey + + * ext/hls/gsthlsdemux.c: + * ext/hls/gsthlsdemux.h: + hlsdemux: Don't use deprecated SSL methods + And instead use the fixed-size variants (which aren't deprecated) + +2019-11-06 14:36:11 +0100 Edward Hervey + + * ext/opencv/gstmotioncells.cpp: + * ext/opencv/gstmotioncells.h: + * gst-libs/gst/adaptivedemux/gstadaptivedemux.c: + * gst-libs/gst/uridownloader/gsturidownloader.c: + * gst/asfmux/gstasfobjects.c: + * gst/mxf/mxftypes.c: + bad: Avoid using deprecated API + GTimeval is deprecated + +2019-11-07 18:45:55 +0800 Haihao Xiang + + * sys/msdk/gstmsdk.c: + * sys/msdk/gstmsdkvp8enc.c: + * sys/msdk/gstmsdkvp8enc.h: + * sys/msdk/meson.build: + msdk: remove msdkvp8enc + MediaSDK doesn't support vp8 encode which is not going to be + implemented [1], so remove msdkvp8enc from this plugin + [1]: https://github.com/Intel-Media-SDK/MediaSDK/issues/947 + +2019-11-07 02:41:10 +1100 Matthew Waters + + * gst-libs/gst/vulkan/cocoa/gstvkwindow_cocoa.h: + * gst-libs/gst/vulkan/cocoa/gstvkwindow_cocoa.m: + * gst-libs/gst/vulkan/gstvkbufferpool.c: + * gst-libs/gst/vulkan/gstvkbufferpool.h: + * gst-libs/gst/vulkan/gstvkcommandpool.c: + * gst-libs/gst/vulkan/gstvkdescriptorcache.c: + * gst-libs/gst/vulkan/gstvkdescriptorpool.c: + * gst-libs/gst/vulkan/gstvkdisplay.c: + * gst-libs/gst/vulkan/gstvkdisplay.h: + * gst-libs/gst/vulkan/gstvkimagebufferpool.c: + * gst-libs/gst/vulkan/gstvkimagebufferpool.h: + * gst-libs/gst/vulkan/gstvkinstance.c: + * gst-libs/gst/vulkan/gstvkinstance.h: + * gst-libs/gst/vulkan/gstvkphysicaldevice.c: + * gst-libs/gst/vulkan/gstvkphysicaldevice.h: + * gst-libs/gst/vulkan/gstvkswapper.c: + * gst-libs/gst/vulkan/gstvkswapper.h: + * gst-libs/gst/vulkan/gstvkwindow.c: + * gst-libs/gst/vulkan/gstvkwindow.h: + * gst-libs/gst/vulkan/ios/gstvkwindow_ios.h: + * gst-libs/gst/vulkan/ios/gstvkwindow_ios.m: + * gst-libs/gst/vulkan/win32/gstvkwindow_win32.c: + * gst-libs/gst/vulkan/win32/gstvkwindow_win32.h: + * gst-libs/gst/vulkan/xcb/gstvkwindow_xcb.c: + * gst-libs/gst/vulkan/xcb/gstvkwindow_xcb.h: + vulkan: remove the private struct from the public struct + Remove any references to CamelTypePrivate from the public CamelType + struct. They can be accessed as needed using + camel_type_get_instance_private(). + +2019-11-06 22:19:42 +1100 Matthew Waters + + * ext/vulkan/vkcolorconvert.c: + * ext/vulkan/vkcolorconvert.h: + * ext/vulkan/vkfullscreenrender.c: + * ext/vulkan/vkfullscreenrender.h: + * ext/vulkan/vkimageidentity.c: + * ext/vulkan/vkimageidentity.h: + * ext/vulkan/vkviewconvert.c: + * ext/vulkan/vkviewconvert.h: + * gst-libs/gst/vulkan/gstvkdescriptorcache-private.h: + * gst-libs/gst/vulkan/gstvkdescriptorcache.c: + * gst-libs/gst/vulkan/gstvkdescriptorcache.h: + * gst-libs/gst/vulkan/gstvkdescriptorpool.c: + * gst-libs/gst/vulkan/gstvkdescriptorpool.h: + * gst-libs/gst/vulkan/gstvkdescriptorset.c: + * gst-libs/gst/vulkan/gstvkdescriptorset.h: + * gst-libs/gst/vulkan/meson.build: + * gst-libs/gst/vulkan/vulkan.h: + * gst-libs/gst/vulkan/vulkan_fwd.h: + vulkan: implement proper descriptor set handling + The major functionality gain this provides is proper reference counting + for a descriptor set. Overall this allows us to create descriptor sets + when they are needed (or reused from a cache) without violating any of + vulkan's object synchronisation requirements. + As there are a fixed number of sets available in a pool, the number of + descriptors in elements is currently hardcoded to 32. This can be extended + in a future change to create pools on the fly if that limit is ever overrun. + +2019-11-06 09:34:36 +1100 Matthew Waters + + * ext/vulkan/vkcolorconvert.c: + * ext/vulkan/vkfullscreenrender.c: + * ext/vulkan/vkimageidentity.c: + * ext/vulkan/vkviewconvert.c: + * gst-libs/gst/vulkan/gstvkfence.c: + * gst-libs/gst/vulkan/gstvkfence.h: + vulkan/fence: add always-signalled fence type + Allows a cleaner control flow when there is no fence available for use + with the trash list. An always signalled fence type will always return + TRUE for gst_vulkan_fence_is_signalled. + +2019-11-06 09:29:51 +1100 Matthew Waters + + * gst-libs/gst/vulkan/gstvkhandle.c: + * gst-libs/gst/vulkan/gstvkhandle.h: + * gst-libs/gst/vulkan/meson.build: + * gst-libs/gst/vulkan/vulkan.h: + * gst-libs/gst/vulkan/vulkan_fwd.h: + vulkan: add handle type for arbitrary vulkan handles + Serve two purposes: + 1. refcounting of vulkan handles with associated destruction. When + combined with the trash list, the user can ensure destruction at + the correct time according to the vulkan rules. + 2. avoids polluting our API with 32-bit vs 64-bit integer/pointers + differences as exposed through the vulkan API. on 32-bit, vulkan + non-dispatchable handles are 64-bit integers and on 64-bit, they + are pointers. + +2019-11-06 22:09:02 +1100 Matthew Waters + + * ext/vulkan/vkviewconvert.c: + vulkanviewconvert: fix typo of output image view name + +2019-10-16 17:47:33 +1100 Matthew Waters + + * gst-libs/gst/vulkan/gstvktrash.c: + vulkan: fix non-dispatchable handles on 32-bit platforms + non-dispatchable handles are 64-bit integers on 32-bit platforms + +2019-10-16 17:42:33 +1100 Matthew Waters + + * ext/vulkan/vkcolorconvert.c: + * ext/vulkan/vkfullscreenrender.c: + * ext/vulkan/vkimageidentity.c: + * ext/vulkan/vkshader.c: + * ext/vulkan/vkviewconvert.c: + * gst-libs/gst/vulkan/gstvkswapper.c: + * gst-libs/gst/vulkan/gstvktrash.c: + vulkan: use VK_NULL_HANDLE in more places + Fixes compiler warnings on 32-bit platforms assigning a void * to a + 64-bit integer value. + +2019-10-16 17:27:16 +1100 Matthew Waters + + * gst-libs/gst/vulkan/gstvkinstance.c: + vulkan: use the provided VKAPI_ATTR for the debug callback + Ensures that we get the calling convention correct for the platform we + are using. + +2019-11-03 21:50:39 +1100 Matthew Waters + + * gst-libs/gst/vulkan/gstvkdebug.h: + * gst-libs/gst/vulkan/gstvkswapper.c: + vulkan: dump surface information + +2019-10-30 19:33:25 +1100 Matthew Waters + + * gst-libs/gst/vulkan/gstvkinstance.c: + vulkan: print criticals/warnings for vulkan errors/warnings + Simplifies finding the erronous cases in using the Vulkan API + incorrectly. + +2019-10-30 00:57:55 +1100 Matthew Waters + + * ext/vulkan/vkcolorconvert.c: + * ext/vulkan/vkimageidentity.c: + * ext/vulkan/vkupload.c: + * ext/vulkan/vkviewconvert.c: + * gst-libs/gst/vulkan/gstvkimagebufferpool.c: + * gst-libs/gst/vulkan/gstvkimagememory.c: + * gst-libs/gst/vulkan/gstvkimagememory.h: + * gst-libs/gst/vulkan/gstvkswapper.c: + vulkan/image: use the full video info for returning vulkan formats + We may need some colorspace information for returning sRGB vs no sRGB. + +2019-11-06 14:22:07 +0100 Edward Hervey + + * gst/mpegtsdemux/tsdemux.c: + tsdemux: Handle continuity mismatch in more cases + Packets of a given PID are meant to have sequential continuity counters + (modulo 16). If there are not sequential, this is the sign of a broken + stream, which we then consider as a discontinuity. + But if that new packet is a frame start (PUSI is true), then we can resume + from that packet without any damage. + +2019-11-01 14:22:46 +0900 Yeongjin Jeong + + * ext/vulkan/meson.build: + vulkan: Fix build error when gstvulkan is not installed + The following build error occurs: + vkdeviceprovider.h:30:10: fatal error: gst/vulkan/vulkan.h: No such file or directory + #include + ^~~~~~~~~~~~~~~~~~~~~ + +2019-10-23 10:11:46 -0700 Ederson de Souza + + * gst/debugutils/debugutilsbad.c: + * gst/debugutils/gstclockselect.c: + * gst/debugutils/gstclockselect.h: + * gst/debugutils/meson.build: + * tests/check/elements/clockselect.c: + * tests/check/meson.build: + debugutils: clockselect, a pipeline that enables clock selection + Sometimes, one wants to force a clock on some pipelines - for instance, + when testing TSN related pipelines, one usually uses GstPtpClock or + CLOCK_REALTIME (assuming system realtime clock is in sync with network + one). Until now, one needs to write an application for that - not + difficult, but quite boring if one just wants to test something. This + patch presents a new element to help that: clockselect. + clockselect is a pipeline with two properties to select a clock. One + property, "clock-id", enables one to choose between "monotonic", + "realtime", "ptp" or "default" clock - where default keeps pipeline + behaviour of choosing a clock based on its elements. The other property, + "ptp-domain" gives one the choice of which PTP domain should be used. + Some very simple tests also added for this new element. + +2019-08-27 07:59:27 +0200 Niels De Graef + + * ext/dtls/gstdtlsconnection.c: + * ext/dtls/gstdtlsdec.c: + * ext/dtls/gstdtlsenc.c: + * ext/dtls/gstdtlssrtpenc.c: + * ext/resindvd/rsninputselector.c: + * ext/sctp/gstsctpdec.c: + * ext/sctp/gstsctpenc.c: + * ext/sctp/sctpassociation.c: + * ext/srt/gstsrtsink.c: + * ext/srt/gstsrtsrc.c: + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/gstwebrtcice.c: + * ext/webrtc/sctptransport.c: + * ext/webrtc/webrtcdatachannel.c: + * ext/wpe/gstwpesrc.cpp: + * gst-libs/gst/basecamerabinsrc/gstbasecamerasrc.c: + * gst-libs/gst/vulkan/gstvkinstance.c: + * gst-libs/gst/webrtc/icetransport.c: + * gst/camerabin2/gstcamerabin2.c: + * sys/d3d11/gstd3d11window.c: + * sys/dvb/dvbbasebin.c: + * sys/dvb/gstdvbsrc.c: + * sys/ipcpipeline/gstipcpipelinesink.c: + * sys/ipcpipeline/gstipcpipelinesrc.c: + * sys/shm/gstshmsink.c: + Don't pass default GLib marshallers for signals + By passing NULL to `g_signal_new` instead of a marshaller, GLib will + actually internally optimize the signal (if the marshaller is available + in GLib itself) by also setting the valist marshaller. This makes the + signal emission a bit more performant than the regular marshalling, + which still needs to box into `GValue` and call libffi in case of a + generic marshaller. + Note that for custom marshallers, one would use + `g_signal_set_va_marshaller()` with the valist marshaller instead. + +2019-10-28 13:42:15 +0900 Justin Kim + + * ext/srt/gstsrtobject.c: + srt: split incoming buffer up into srt chunk + +2019-11-02 16:29:02 +0100 Ignacio Casal Quinteiro + + * sys/wasapi/gstwasapisrc.c: + wasapi: minor cleanup + +2019-08-27 15:14:31 +0200 Michael Olbrich + + * gst/sdp/gstsdpsrc.c: + sdp: don't leak the ghost pad + The peer is already gone when pad_removed_cb() called, so the ghost cannot + be removed. Use g_object_set_data() instead to remember the ghost pad. + Copied from similar code in GstRTPBin. + +2019-10-22 14:10:30 -0400 Aaron Boxer + + * sys/d3dvideosink/d3dhelpers.c: + * sys/d3dvideosink/d3dhelpers.h: + * sys/d3dvideosink/d3dvideosink.c: + * sys/d3dvideosink/gstd3d9overlay.c: + * sys/d3dvideosink/gstd3d9overlay.h: + * sys/d3dvideosink/meson.build: + d3dvideosink: support OverlayComposition for GPU overlay compositing + +2019-11-04 20:42:19 -0500 Aaron Boxer + + * gst/mpegtsmux/gstbasetsmux.c: + basetsmux: allow null J2K profile + Since we are not requiring that profile equals GST_JPEG2000_PARSE_PROFILE_BC_SINGLE, + (as the standard requires) we can allow profile to be null. We relax this condition because + OpenJPEG can't create broadcast profiles. + +2019-11-03 05:56:12 -0500 Aaron Boxer + + * gst/videoparsers/gstjpeg2000parse.c: + jpeg2000parse: fail caps negotiation if caps are NOT fixed + +2019-08-08 15:27:11 -0400 Aaron Boxer + + * gst/videoparsers/gstjpeg2000parse.c: + jpeg2000parse: use pre_push_frame to reset parser + +2019-08-08 15:26:22 -0400 Aaron Boxer + + * gst/videoparsers/gstjpeg2000parse.c: + jpeg2000parse: parse_event: call base class at end + derived class should do it's work first before calling base + +2019-08-05 21:53:54 -0400 Aaron Boxer + + * gst/videoparsers/gstjpeg2000parse.c: + jpeg2000parse: do hard reset if gst_base_parse_finish_frame fails + +2019-08-05 17:15:57 -0400 Aaron Boxer + + * gst/videoparsers/gstjpeg2000parse.c: + jpeg2000parse: initialize some variables to make valgrind happy + +2019-08-09 09:29:22 -0400 Aaron Boxer + + * tests/check/elements/jpeg2000parse.c: + * tests/check/meson.build: + jpeg2000parse: add unit test + +2019-08-09 09:28:53 -0400 Aaron Boxer + + * gst/videoparsers/gstjpeg2000parse.c: + jpeg2000parse: use GST_INT in caps for profile + Negotiation failed with GST_UINT + +2019-08-05 15:38:08 -0400 Aaron Boxer + + * gst/videoparsers/gstjpeg2000parse.c: + * gst/videoparsers/gstjpeg2000parse.h: + jpeg2000parse: make explicit that codec_format is for src caps + +2019-08-05 15:24:49 -0400 Aaron Boxer + + * gst/videoparsers/gstjpeg2000parse.c: + jpeg2000parse: refactor + 1. only recalculate src codec format if sink caps change + 2. use correct value for "jp2c" magic in J2C box ID + 3. only parse J2K magic once, and store result + 4. more sanity checks comparing caps to parsed codec + +2019-08-05 15:34:08 -0400 Aaron Boxer + + * gst/videoparsers/gstjpeg2000parse.c: + jpeg2000parse: set parsed to TRUE in src caps + +2019-08-05 15:33:33 -0400 Aaron Boxer + + * gst/videoparsers/gstjpeg2000parse.c: + jpeg2000parse: only cache caps parameters when caps have in fact changed + +2019-08-05 15:23:24 -0400 Aaron Boxer + + * gst/videoparsers/gstjpeg2000parse.c: + jpeg2000parse: fix typos in media format + +2019-08-05 15:19:12 -0400 Aaron Boxer + + * gst/videoparsers/gstjpeg2000parse.c: + * gst/videoparsers/gstjpeg2000parse.h: + jpeg2000parse: add reset method + Also add three new struct members, currently unused. + +2019-09-02 15:08:44 -0400 Aaron Boxer + + * NEWS: + * docs/plugins/gst_plugins_cache.json: + * ext/aom/gstav1enc.c: + * ext/assrender/gstassrender.c: + * ext/closedcaption/gstcea708decoder.c: + * ext/closedcaption/gstceaccoverlay.c: + * ext/closedcaption/raw_decoder.c: + * ext/closedcaption/sliced.h: + * ext/colormanagement/gstlcms.c: + * ext/curl/gstcurlhttpsrc.h: + * ext/dash/gstdashdemux.c: + * ext/dash/gstmpdparser.c: + * ext/directfb/dfbvideosink.c: + * ext/dtls/gstdtlsconnection.h: + * ext/hls/gsthlsdemux.c: + * ext/kate/gstkatedec.c: + * ext/kate/gstkateenc.c: + * ext/ladspa/gstladspa.c: + * ext/libmms/gstmms.c: + * ext/lv2/gstlv2filter.c: + * ext/lv2/gstlv2utils.c: + * ext/mpeg2enc/gstmpeg2enc.cc: + * ext/mpeg2enc/gstmpeg2encoptions.cc: + * ext/neon/gstneonhttpsrc.c: + * ext/opencv/MotionCells.cpp: + * ext/opencv/gstcvdilate.cpp: + * ext/opencv/gstcvdilateerode.cpp: + * ext/opencv/gstcverode.cpp: + * ext/opencv/gstcvsmooth.cpp: + * ext/opencv/gstdewarp.cpp: + * ext/opencv/gstdisparity.cpp: + * ext/opencv/gstedgedetect.cpp: + * ext/opencv/gstfaceblur.cpp: + * ext/opencv/gstfacedetect.cpp: + * ext/opencv/gstgrabcut.cpp: + * ext/opencv/gstretinex.cpp: + * ext/opencv/gstsegmentation.cpp: + * ext/opencv/gstskindetect.cpp: + * ext/opencv/gsttextoverlay.cpp: + * ext/resindvd/gstmpegdemux.c: + * ext/resindvd/resindvdsrc.c: + * ext/resindvd/rsninputselector.c: + * ext/rtmp/gstrtmpsrc.c: + * ext/soundtouch/gstpitch.cc: + * ext/spandsp/gstdtmfdetect.c: + * ext/spandsp/gsttonegeneratesrc.c: + * ext/srt/gstsrtobject.c: + * ext/srtp/gstsrtpdec.c: + * ext/srtp/gstsrtpenc.c: + * ext/ttml/subtitle.h: + * ext/ttml/ttmlparse.c: + * ext/vulkan/vkdownload.c: + * ext/vulkan/vkfullscreenrender.c: + * ext/vulkan/vkshader.c: + * ext/vulkan/vkupload.c: + * ext/vulkan/vkviewconvert.c: + * ext/wayland/gstwaylandsink.c: + * ext/wayland/wlbuffer.c: + * ext/webp/gstwebpdec.c: + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/transportreceivebin.c: + * ext/webrtc/webrtcsdp.c: + * ext/webrtcdsp/gstwebrtcdsp.cpp: + * ext/webrtcdsp/gstwebrtcechoprobe.cpp: + * ext/webrtcdsp/gstwebrtcechoprobe.h: + * ext/wildmidi/gstwildmididec.c: + * ext/wpe/gstwpesrc.cpp: + * ext/x265/gstx265enc.c: + * ext/zbar/gstzbar.c: + * gst-libs/gst/adaptivedemux/gstadaptivedemux.c: + * gst-libs/gst/audio/gstnonstreamaudiodecoder.c: + * gst-libs/gst/codecparsers/gsth264parser.c: + * gst-libs/gst/codecparsers/gsth265parser.c: + * gst-libs/gst/codecparsers/gsth265parser.h: + * gst-libs/gst/codecparsers/gstmpeg4parser.c: + * gst-libs/gst/codecparsers/gstmpeg4parser.h: + * gst-libs/gst/codecparsers/gstvc1parser.h: + * gst-libs/gst/codecparsers/gstvp9parser.c: + * gst-libs/gst/codecparsers/gstvp9parser.h: + * gst-libs/gst/interfaces/photography.c: + * gst-libs/gst/mpegts/gst-dvb-descriptor.c: + * gst-libs/gst/mpegts/gst-dvb-descriptor.h: + * gst-libs/gst/mpegts/gstmpegtsdescriptor.c: + * gst-libs/gst/player/gstplayer-media-info.h: + * gst-libs/gst/player/gstplayer.c: + * gst-libs/gst/uridownloader/gstfragment.c: + * gst-libs/gst/uridownloader/gsturidownloader.c: + * gst-libs/gst/vulkan/gstvkinstance.c: + * gst-libs/gst/vulkan/gstvkswapper.c: + * gst-libs/gst/vulkan/gstvkwindow.c: + * gst-libs/gst/vulkan/win32/gstvkwindow_win32.c: + * gst-libs/gst/wayland/wayland.c: + * gst/asfmux/gstasfmux.c: + * gst/asfmux/gstasfobjects.c: + * gst/audiovisualizers/gstsynaescope.c: + * gst/autoconvert/gstautoconvert.c: + * gst/autoconvert/gstautovideoconvert.c: + * gst/autoconvert/plugin.c: + * gst/bayer/gstbayer2rgb.c: + * gst/camerabin2/camerabin2-src.txt: + * gst/camerabin2/camerabingeneral.c: + * gst/camerabin2/gstcamerabin2.c: + * gst/camerabin2/gstviewfinderbin.c: + * gst/camerabin2/gstwrappercamerabinsrc.c: + * gst/debugutils/fpsdisplaysink.c: + * gst/debugutils/gstdebugspy.c: + * gst/dvbsuboverlay/dvb-sub.c: + * gst/dvbsuboverlay/dvb-sub.h: + * gst/dvdspu/Notes.txt: + * gst/dvdspu/gstspu-vobsub-render.c: + * gst/festival/gstfestival.c: + * gst/frei0r/frei0r.h: + * gst/frei0r/gstfrei0r.c: + * gst/gaudieffects/gstburn.c: + * gst/gaudieffects/gstchromium.c: + * gst/gaudieffects/gstdilate.c: + * gst/gaudieffects/gstdodge.c: + * gst/gaudieffects/gstexclusion.c: + * gst/gaudieffects/gstgaussblur.c: + * gst/gaudieffects/gstsolarize.c: + * gst/geometrictransform/gstbulge.c: + * gst/geometrictransform/gststretch.c: + * gst/geometrictransform/gsttunnel.c: + * gst/id3tag/id3tag.c: + * gst/ivfparse/gstivfparse.c: + * gst/jpegformat/gstjpegparse.c: + * gst/librfb/rfbdecoder.c: + * gst/mpegdemux/gstmpegdemux.c: + * gst/mpegpsmux/psmux.c: + * gst/mpegpsmux/psmuxstream.c: + * gst/mpegpsmux/psmuxstream.h: + * gst/mpegtsdemux/TODO: + * gst/mpegtsdemux/mpegtsbase.c: + * gst/mpegtsdemux/mpegtsbase.h: + * gst/mpegtsdemux/mpegtspacketizer.c: + * gst/mpegtsdemux/tsdemux.c: + * gst/mpegtsmux/gstmpegtsmux.c: + * gst/mpegtsmux/tsmux/tsmux.c: + * gst/mpegtsmux/tsmux/tsmuxstream.c: + * gst/mxf/mxfdms1.c: + * gst/netsim/gstnetsim.c: + * gst/pcapparse/gstirtspparse.c: + * gst/pnm/gstpnmdec.c: + * gst/removesilence/gstremovesilence.c: + * gst/rist/gstristrtxsend.c: + * gst/rist/gstristsink.c: + * gst/rist/gstroundrobin.c: + * gst/rtp/gstrtpsrc.c: + * gst/videoparsers/gsth264parse.c: + * gst/videoparsers/gsth265parse.c: + * gst/videoparsers/gstmpeg4videoparse.c: + * gst/videoparsers/gstmpegvideoparse.c: + * gst/videoparsers/h263parse.c: + * gst/vmnc/vmncdec.c: + * hooks/pre-commit.hook: + * sys/androidmedia/gstahcsrc.c: + * sys/androidmedia/gstamcvideodec.c: + * sys/androidmedia/gstamcvideoenc.c: + * sys/androidmedia/gstjniutils.c: + * sys/applemedia/avfvideosrc.m: + * sys/applemedia/vtenc.c: + * sys/d3d11/gstd3d11device.c: + * sys/d3d11/meson.build: + * sys/d3dvideosink/d3dhelpers.c: + * sys/d3dvideosink/d3dvideosink.c: + * sys/decklink/gstdecklink.cpp: + * sys/decklink/gstdecklinkvideosink.cpp: + * sys/decklink/gstdecklinkvideosrc.cpp: + * sys/directsound/gstdirectsoundsrc.c: + * sys/dshowdecwrapper/gstdshowaudiodec.cpp: + * sys/dshowdecwrapper/gstdshowvideodec.cpp: + * sys/dshowdecwrapper/gstdshowvideodec.h: + * sys/dshowsrcwrapper/gstdshow.cpp: + * sys/dshowsrcwrapper/gstdshowaudiosrc.cpp: + * sys/dshowsrcwrapper/gstdshowvideosrc.cpp: + * sys/dshowvideosink/dshowvideosink.cpp: + * sys/dvb/camtransport.c: + * sys/dvb/dvbbasebin.c: + * sys/dvb/gstdvbsrc.c: + * sys/ipcpipeline/gstipcpipelinesink.c: + * sys/ipcpipeline/gstipcslavepipeline.c: + * sys/kms/gstkmssink.c: + * sys/msdk/gstmsdkallocator_libva.c: + * sys/msdk/gstmsdkbufferpool.c: + * sys/msdk/gstmsdkenc.c: + * sys/msdk/gstmsdkh264enc.c: + * sys/msdk/gstmsdksystemmemory.c: + * sys/msdk/gstmsdkvc1dec.c: + * sys/msdk/gstmsdkvideomemory.c: + * sys/msdk/gstmsdkvpp.c: + * sys/msdk/gstmsdkvpputil.c: + * sys/msdk/msdk.c: + * sys/nvcodec/gstcudautils.c: + * sys/nvcodec/gstnvbaseenc.c: + * sys/uvch264/gstuvch264_src.c: + * sys/uvch264/gstuvch264deviceprovider.c: + * sys/wasapi/gstwasapisink.c: + * sys/winks/gstksvideodevice.c: + * sys/winks/ksvideohelpers.c: + * sys/winscreencap/gstdx9screencapsrc.c: + * sys/winscreencap/gstgdiscreencapsrc.c: + * tests/check/elements/adaptive_demux_engine.h: + * tests/check/elements/avtpcvfpay.c: + * tests/check/elements/dash_mpd.c: + * tests/check/elements/hlsdemux_m3u8.c: + * tests/check/elements/jifmux.c: + * tests/check/elements/nvdec.c: + * tests/check/libs/insertbin.c: + * tests/check/libs/player.c: + * tests/check/pipelines/ipcpipeline.c: + * tests/examples/ipcpipeline/ipc-play.c: + * tests/examples/playout.c: + * tools/gst-transcoder.c: + * tools/utils.c: + documentation: fixed a heap o' typos + +2019-11-05 13:52:55 +0000 Vivia Nikolaidou + + * gst/meson.build: + * gst/rtmp2/TODO: + * gst/rtmp2/gstrtmp2.c: + * gst/rtmp2/gstrtmp2locationhandler.c: + * gst/rtmp2/gstrtmp2locationhandler.h: + * gst/rtmp2/gstrtmp2sink.c: + * gst/rtmp2/gstrtmp2sink.h: + * gst/rtmp2/gstrtmp2src.c: + * gst/rtmp2/gstrtmp2src.h: + * gst/rtmp2/meson.build: + * gst/rtmp2/rtmp/amf.c: + * gst/rtmp2/rtmp/amf.h: + * gst/rtmp2/rtmp/rtmpchunkstream.c: + * gst/rtmp2/rtmp/rtmpchunkstream.h: + * gst/rtmp2/rtmp/rtmpclient.c: + * gst/rtmp2/rtmp/rtmpclient.h: + * gst/rtmp2/rtmp/rtmpconnection.c: + * gst/rtmp2/rtmp/rtmpconnection.h: + * gst/rtmp2/rtmp/rtmphandshake.c: + * gst/rtmp2/rtmp/rtmphandshake.h: + * gst/rtmp2/rtmp/rtmpmessage.c: + * gst/rtmp2/rtmp/rtmpmessage.h: + * gst/rtmp2/rtmp/rtmputils.c: + * gst/rtmp2/rtmp/rtmputils.h: + * meson_options.txt: + Add files from gst-rtmp + For master, without autotools. + +2019-10-06 22:46:52 +0900 Wonchul Lee + + * ext/aom/gstav1enc.c: + * ext/aom/gstav1enc.h: + av1enc: Add tile-{columns,rows} properties + It provides to set tile-columns and tile-rows configurations. The av1 + codec allows an input image frame be partitioned into separate vertical + or horizontal tile which can be encoded or decoded independently. It + helps to encode/decode parallel. + +2019-10-06 17:20:12 +0900 Wonchul Lee + + * ext/aom/gstav1enc.c: + av1enc: Enable row-mt by default + Enabling row-mt property can help to increase cpu utilization and reduce + encoding speed, so set it to on by default. + +2019-07-23 18:24:11 +0900 Yeongjin Jeong + + * ext/curl/gstcurlhttpsrc.c: + curlhttpsrc: Hook up libcurl logging message to gstreamer + CURLOPT_DEBUGFUNCTION option replaces the standard debug function + used when CURLOPT_VERBOSE is in effect. This callback receives various debug information. + +2019-09-20 14:52:15 +0200 Olivier Crête + + * gst/rist/gstristsrc.c: + ristsrc: Apply BINDTODEVICE to socket created by udpsrc too + +2019-11-03 09:54:40 +0100 Sebastian Dröge + + * ext/closedcaption/gstccconverter.c: + * tests/check/elements/ccconverter.c: + ccconverter: Instead of erroring out on too big input drop additional data + +2019-10-30 14:56:41 +0700 Roman Shpuntov + + * sys/applemedia/vtdec.c: + vtdec: fix leak of CMFormatDescription + There was consideration for replacing the CMFormatDescription used + on format changes in `set_format()` however on shutdown, we were + leaking the CMFormatDescription at the end of processing. + 'https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1106' + +2019-10-12 04:04:59 +0900 Yeongjin Jeong + + * gst/videoparsers/gsth265parse.c: + h265parse: Fix wrong NALU minimum length check + Fixes a problem where an EOS/EOB NALU placed at the end of + an AU is detected as an other AU and create a buffer that + does not have valid pts. + +2019-10-12 03:49:33 +0900 Yeongjin Jeong + + * gst/videoparsers/gsth264parse.c: + h264parse: Fix wrong NALU minimum length check + Fixes a problem where an EOS/EOB NALU placed at the end of + an AU is detected as an other AU and create a buffer that + does not have valid pts. + +2019-11-02 16:51:09 +0100 Jan Alexander Steffens (heftig) + + * ext/openexr/meson.build: + openexr: Fix compilation with OpenEXR 2.4 + It uses modern C++; adding -std=c++98 breaks the build. + +2019-10-31 15:14:21 +0700 Roman Shpuntov + + * sys/applemedia/vtdec.c: + vtdec: memory leaks bugfix + release 'videoDecoderSpecification' variable in 'gst_vtdec_create_session' function. + release 'extensions' variable in 'create_format_description_from_codec_data' function. + +2019-10-11 14:48:11 +0800 Haihao Xiang + + * sys/msdk/gstmsdkenc.c: + * sys/msdk/gstmsdkmjpegenc.c: + msdkmjpegenc: convert UYVY to YUY2 instead of NV12 + Before this fix, the chroma subsampling of the output is 4:2:0. It is + 4:2:2 with this fix, which is better for UYVY input + +2019-10-11 13:05:33 +0800 Haihao Xiang + + * sys/msdk/gstmsdkenc.c: + * sys/msdk/gstmsdkmjpegenc.c: + msdkmjpegenc: don't need conversion for BGRA and YUY2 + jpeg encoder in MSDK can accept BGRA and YUY2 input. + +2019-10-11 12:50:02 +0800 Haihao Xiang + + * sys/msdk/gstmsdkenc.c: + * sys/msdk/gstmsdkenc.h: + msdkenc: add need_conversion method + In future, a sub class of GstMsdkEncClass may decide a native format by + using this method, e.g. JPEG encoder may accept YUY2 input, however the + current implemation needs a conversion from YUY2 to NV12 before encoding. + In addtion, a sub class may choose a format for encoding if the input + format is not supported by MSDK, e.g. the current implemation does + UYVY->NV12 if the input format is UYVY. We may do UYVY->YUY2 for JPEG + encoder in future + +2019-10-09 13:41:09 +0800 Haihao Xiang + + * sys/msdk/gstmsdkallocator_libva.c: + * sys/msdk/msdk_libva.c: + msdk: support for MFX_FOURCC_BGR4 frame allocation + MFX_FOURCC_BGR4 is mapped to VA_FOURCC_ABGR and JPEG encoder needs a + MFX_FOURCC_BGR4 frame for internal usage when the input format is + MFX_FOURCC_RGB4 + This is a preparation for supporting native formats of JPEG encoder + +2019-09-26 17:45:31 +0200 Edward Hervey + + mpegtsmux: Add SCTE-35 support + This adds two properties: + * scte-35-pid: If not 0, enables the SCTE-35 support for the current + program. This will write the proper PMT and send SCTE-35 NULL + commands (i.e. heartbeats) at a regular interval + * scte-35-null-interval: This specifies the interval at which the + NULL commands should be sent + Sending SCTE-35 commands is done by creating the appropriate SCTE-35 + GstMpegtsSection and then sending them on the muxer. See the + associated example + +2019-09-26 17:28:27 +0200 Edward Hervey + + * gst-libs/gst/mpegts/gst-scte-section.c: + * gst-libs/gst/mpegts/gst-scte-section.h: + * gst-libs/gst/mpegts/gstmpegtssection.c: + * gst-libs/gst/mpegts/gstmpegtssection.h: + * gst-libs/gst/mpegts/meson.build: + * gst/mpegtsdemux/mpegtsbase.c: + * tests/check/libs/mpegts.c: + * tests/examples/mpegts/ts-parser.c: + mpegts: Add support for SCTE-35 sections + Not all commands are supported, but the most common ones are. + Both parsing and packetizing is supported + +2019-09-26 17:43:57 +0200 Edward Hervey + + * gst/mpegtsmux/tsmux/tsmux.c: + tsmux: Disable bluray-isms from PMT + We were unconditionally adding top-level descriptors in the PMT which + were only related to bluray support for PS3 (from 10 years ago). + These should be re-added conditionally + +2019-09-26 17:13:30 +0200 Edward Hervey + + * gst/mpegtsdemux/mpegtspacketizer.c: + mpegtspacketizer: Fix off-by-one error + This went un-noticed for 6 years :( The issue is that for short + sections (without subtables and CRC), we would always fail when + checking whether we had enough data or not and then default to the + long section checking. + Use the long section checking would then cause interesting side-effects + for short sections (such as believing they were already seen and therefore + would be dropped/ignored). + +2019-10-28 13:28:28 +0100 Víctor Manuel Jáquez Leal + + * sys/msdk/gstmsdkdec.c: + * sys/msdk/gstmsdkdec.h: + * sys/msdk/gstmsdkvc1dec.c: + msdkdec: use decoder base class packetized flag + Instead of using a proxy of `is_packetized` flag this patch + replaces it with the accessor to that flag in decoder base class, + avoiding probable mismatches. + +2019-09-27 10:50:18 +0800 Haihao Xiang + + * sys/msdk/gstmsdkdec.c: + * sys/msdk/gstmsdkvc1dec.c: + msdkdec: add parse callback for non-packetized input + commit 55c0d720 added the capability to handle non-packetized bitstream, + and there is a loop to handle multiple frames in a non-packetized buffer + in gst_msdkdec_handle_frame. However it is possible that a + non-packetized buffer still contains valid data but there is no long any + pending unfinished frame. Currently gst_video_decoder_decode_frame is + invoked to send a new frame with new input data, the situaltion is + repeated till an EOS is received. An application has to exit when + receiving an EOS, however there is still valid data in a + non-packetezied input buffer, hence some frames are dropped. + This fix adds a parse callback for non-packeteized input, a new frame + will be sent to the subclass as soon as the input buffer has valid data + This fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/665 + +2019-10-28 11:25:15 +0200 Sebastian Dröge + + * ext/closedcaption/gstccextractor.c: + ccextractor: Remove unused set/get_property() functions + +2019-10-28 11:22:06 +0200 Sebastian Dröge + + * ext/closedcaption/gstccextractor.c: + ccextractor: Always forward all sticky events to the caption pad + And only update the caps and stream-start event accordingly. This + ensures that we'll always forward sticky events that arrive after the + caption pad was created, and especially updates to existing sticky + events like the segment event. + Also create a proper stream id based on the upstream stream id for the + stream-start event, and make sure that all the sticky events we know are + already on the caption pad at the time it is added to the element. + +2019-10-28 02:27:04 +1100 Matthew Waters + + * ext/vulkan/vkimageidentity.c: + vulkanimage: move fence creation earlier + Fixes a critical: + GStreamer-CRITICAL **: 02:26:34.698: gst_mini_object_ref: assertion 'mini_object != NULL' failed + +2019-10-28 02:18:18 +1100 Matthew Waters + + * ext/vulkan/vkcolorconvert.c: + * ext/vulkan/vkimageidentity.c: + * ext/vulkan/vkviewconvert.c: + vulkan: change to clamp to edge rather than clamp to border + clamp-to-border will return the border color which is typically black, + white or transparent. When linear filtering the edge pixels will + typeically be combined with the border color which is not typically what + we want. Especially when color converting, this removes a green box + around the edge when converting YUV->RGB. + +2019-10-24 15:26:33 +0800 Haihao Xiang + + * sys/msdk/gstmsdkh265enc.c: + * sys/msdk/gstmsdkh265enc.h: + msdkh265enc: Add support for tiled encoding + Add num-tile-rows and num-tile-cols properties to set the number of rows + and columns + +2019-10-24 16:42:23 -0700 Julien Isorce + + * ext/srtp/gstsrtpenc.c: + srtpenc: also insert ssrc(s) from rtp buffers + This fixes a regression from commit "srtp: Support libsrtp2" + e9aa11720071f8a1d22b336395e66dd8cbca0c00 where an internal + set of ssrc(s) was added because the libsrtp v2 keeps its + internal streams as private. But the change prevented that + ssrc(s) that not in the caps from being added to the stats. + This patch ensures that all ssrc(s) are inserted to this set + instead of only inserting those from the caps. + +2019-10-18 12:26:26 +0800 Haihao Xiang + + * sys/msdk/gstmsdkh265enc.c: + * sys/msdk/gstmsdkvp9enc.c: + msdk: support P010_10LE in DMABuf mode for VP9/HEVC encoding + +2019-10-24 19:10:30 +0800 Cheng-Chang Wu + + * sys/androidmedia/jni/gstamcsurfacetexture-jni.c: + androidmedia: Make sure that the first member of GstAmcSurfaceTextureJNI is correct + It's a subclass of GstAmcSurfaceTexture so should have that as first + struct member or otherwise it won't work. + Fixes #1105 + +2019-10-24 19:14:58 +0800 Cheng-Chang Wu + + * sys/androidmedia/jni/gstamc-codec-jni.c: + androidmedia: Call JNI method with the actual Java object instead of our wrapper struct + Fixes #1105 + +2019-10-24 15:40:25 +0200 Jan Alexander Steffens (heftig) + + * ext/opencv/meson.build: + opencv: Don't error when unable to detect OpenCV data dir + Instead, mark OpenCV as not found. We error out later if OpenCV was + explicitly enabled. + +2019-10-11 23:54:55 +0800 Haihao Xiang + + * sys/msdk/gstmsdkvpp.c: + msdkvpp: add support Y410 and Y210 formats + And clean up some macros + +2019-10-16 11:59:32 -0700 U. Artie Eoff + + * sys/msdk/gstmsdkvpp.c: + * sys/msdk/gstmsdkvpp.h: + * sys/msdk/gstmsdkvpputil.c: + msdkvpp: allow cropping via properties + Add crop-left, crop-right, crop-top and crop-bottom + properties to msdkvpp and apply to input surface at + vpp transform run-time. + Implements #1097 + +2019-10-22 18:33:18 +0100 Philippe Normand + + * ext/wpe/WPEThreadedView.cpp: + wpe: Get rid of un-necessary frameComplete dispatchs + frameComplete() should be called only if there's a new commited frame. + +2019-10-19 12:48:55 +0100 Philippe Normand + + * ext/wpe/WPEThreadedView.cpp: + wpe: Run frameComplete outside of images mutex scope + If the mutex is locked while running frameComplete there is a potential deadlock + bound to happen when we get a new exported images from the backend. + Fixes #1101 + +2019-10-23 16:47:43 +0300 Sebastian Dröge + + * gst/timecode/gsttimecodestamper.c: + * gst/timecode/gsttimecodestamper.h: + timecodestamper: Add properties to time out cached upstream/LTC timecodes after a while + By default we never time them out and simply continue couting up with + each frame forever. + +2019-10-23 15:03:09 +0300 Sebastian Dröge + + * gst/timecode/gsttimecodestamper.c: + * gst/timecode/gsttimecodestamper.h: + timecodestamper: Add new auto-resync boolean property + This allows selecting whether we continue updating our last known + upstream timecode whenever a new one arrives or instead only keep the + last known one and from there on count up. + +2019-10-23 14:31:16 +0300 Sebastian Dröge + + * gst/timecode/gsttimecodestamper.c: + * gst/timecode/gsttimecodestamper.h: + timecodestamper: Add last-known-or-zero mode + This uses the last known upstream timecode (counted up per frame), or + otherwise zero if none was known. + The normal last-known timestamp uses the internal timecode as fallback + if no upstream timecode was ever known. + +2019-10-23 14:29:06 +0300 Sebastian Dröge + + * gst/timecode/gsttimecodestamper.c: + timecodestamper: Don't initialize upstream timecode with zero if none was seen + Instead keep it unset and use the internal timecode wherever needed as + fallback. + +2019-10-23 14:28:24 +0300 Sebastian Dröge + + * gst/timecode/gsttimecodestamper.c: + timecodestamper: Update set-tc property documentation with latest version of reality + +2019-10-22 09:30:34 +0300 Sebastian Dröge + + * gst/pnm/gstpnmdec.c: + pnmdec: Return early on ::finish() if we have no actual data to parse + Otherwise we'd be working with a NULL buffer and cause various critical + warnings along the way. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1104 + +2019-09-24 08:55:07 +0300 Jordan Petridis + + * ext/lv2/gstlv2utils.c: + lv2: fix build without the debug system + ``` + FAILED: subprojects/gst-plugins-bad/ext/lv2/b8a2ebe@@gstlv2@sha/gstlv2utils.c.o + ../subprojects/gst-plugins-bad/ext/lv2/gstlv2utils.c: In function 'lv2_log_printf': + ../subprojects/gst-plugins-bad/ext/lv2/gstlv2utils.c:50:3: error: attempt to use poisoned "gst_debug_log_valist" + 50 | gst_debug_log_valist (lv2_debug, GST_LEVEL_INFO, "", "", 0, NULL, fmt, ap); + | ^ + ../subprojects/gst-plugins-bad/ext/lv2/gstlv2utils.c:50:25: error: 'lv2_debug' undeclared (first use in this function); did you mean 'g_debug'? + 50 | gst_debug_log_valist (lv2_debug, GST_LEVEL_INFO, "", "", 0, NULL, fmt, ap); + | ^~~~~~~~~ + | g_debug + ``` + +2019-08-29 21:20:37 +0700 Ratchanan Srirattanamet + + * gst-libs/gst/basecamerabinsrc/gstcamerabinpreview.c: + camerabin2: preview: remove redundant property setting on appsink + Commit 8a56a7de6d5f2cf70dbe6efbd7c8ed74600c8565 (camerabin2: preview: + Appsink doesn't need to sync) add a line that set the "sync" property on + the appsink. However, the author seems to forget that there's another + property setting on appsink a few lines below. + It's very likely that the added line is required because the original + line doesn't take effect (maybe because it's too late). But for whatever + reason, the original line is now redundant. So, I remove it in this + commit. + +2019-10-19 13:52:54 +0100 Alistair Buxton + + * gst-libs/gst/transcoder/meson.build: + meson: use gir_init_section in GstTranscoder + GstTranscoder adds extra_args for gir which call gst_init() during + introspection. These extra arguments are the same as the standard + ones defined in the top level meson.build as "git_init_section", + However, the top level definition also ensures an empty plugin + repository is used. + Because GstTranscoder does not use the standard args, plugins get + loaded when it is introspected. Since some of the plugins fail + without specific hardware, this causes #1100. + This patch makes it use gir_init_section. + Fixes #1100. + +2019-10-18 00:39:12 +0100 Tim-Philipp Müller + + * meson.build: + meson: build gir even when cross-compiling if introspection was enabled explicitly + This can be made to work in certain circumstances when + cross-compiling, so default to not building g-i stuff + when cross-compiling, but allow it if introspection was + enabled explicitly via -Dintrospection=enabled. + See gstreamer/gstreamer#454 and gstreamer/gstreamer#381. + +2019-09-24 16:57:54 -0700 Philippe Normand + + * ext/wpe/WPEThreadedView.cpp: + * ext/wpe/WPEThreadedView.h: + * ext/wpe/gstwpesrc.cpp: + wpesrc: Implement load-bytes action signal + +2019-08-07 17:07:21 +0100 Philippe Normand + + * ext/wpe/WPEThreadedView.cpp: + * ext/wpe/WPEThreadedView.h: + * ext/wpe/gstwpesrc.cpp: + * ext/wpe/gstwpesrc.h: + wpe: Rewrite wpesrc as a glbasesrc subclass + And since it no longer allocates memories itself, this fixes issues with + fakevideosink. A lot of code previously copied from gltestsrc is no longer + needed thanks to the glbasesrc super-class. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1046 + +2019-10-09 14:55:55 +0200 Javier Celaya + + * sys/androidmedia/jni/gstamc-codeclist-jni.c: + Fix get_supported_types function name + +2019-10-09 14:55:29 +0200 Javier Celaya + + * sys/androidmedia/jni/gstamc-codeclist-jni.c: + Fix releasing local refs + +2019-10-09 14:55:05 +0200 Javier Celaya + + * sys/androidmedia/jni/gstamc-codeclist-jni.c: + Fix names of MediaCodecInfo inner classes + +2019-10-09 14:54:24 +0200 Javier Celaya + + * sys/androidmedia/jni/gstamc-codeclist-jni.c: + Fix getting MediaCodecList static methods + +2019-10-11 09:51:24 -0700 Julien Isorce + + * sys/msdk/gstmsdkenc.c: + msdkenc: close encoder upon bitrate change + Upon bitrate change, make sure to close the encoder otherwise + the encoder is not re-initialized and the target bitrate is + never reached, and the encoder was flushed at each frame + from this moment. + Regression introduced in f2b35abcab which replaced the call + that was closing the encoder by an early return to avoid + re-initialization. + +2019-09-17 20:32:18 +0900 Seungha Yang + + * sys/wasapi/gstwasapiutil.c: + wasapi: Fix build warnings + gstwasapiutil.c(173) : warning C4715: 'gst_wasapi_device_role_to_erole': not all control paths return a value + gstwasapiutil.c(188) : warning C4715: 'gst_wasapi_erole_to_device_role': not all control paths return a value + +2019-09-17 20:29:03 +0900 Seungha Yang + + * sys/wasapi/gstwasapidevice.c: + * sys/wasapi/gstwasapiutil.c: + * sys/wasapi/gstwasapiutil.h: + wasapi: Don't cast GstDeviceProvider to GstElement + The GstDeviceProvider isn't subclass of GstElement. + (gst-device-monitor-1.0:49356): GLib-GObject-WARNING **: 20:21:18.651: + invalid cast from 'GstWasapiDeviceProvider' to 'GstElement' + +2019-10-13 14:22:50 +0100 Tim-Philipp Müller + + * .gitignore: + * .gitmodules: + * Makefile.am: + * README: + * autogen.sh: + * common: + * configure.ac: + * docs/.gitignore: + * ext/Makefile.am: + * ext/aom/Makefile.am: + * ext/assrender/Makefile.am: + * ext/avtp/Makefile.am: + * ext/bs2b/Makefile.am: + * ext/bz2/Makefile.am: + * ext/chromaprint/Makefile.am: + * ext/closedcaption/Makefile.am: + * ext/colormanagement/Makefile.am: + * ext/curl/Makefile.am: + * ext/dash/Makefile.am: + * ext/dc1394/Makefile.am: + * ext/directfb/.gitignore: + * ext/directfb/Makefile.am: + * ext/dtls/Makefile.am: + * ext/dts/Makefile.am: + * ext/faac/Makefile.am: + * ext/faad/Makefile.am: + * ext/fdkaac/Makefile.am: + * ext/flite/Makefile.am: + * ext/fluidsynth/Makefile.am: + * ext/gme/Makefile.am: + * ext/gsm/Makefile.am: + * ext/hls/Makefile.am: + * ext/iqa/Makefile.am: + * ext/kate/Makefile.am: + * ext/ladspa/Makefile.am: + * ext/libde265/Makefile.am: + * ext/libmms/Makefile.am: + * ext/lv2/Makefile.am: + * ext/modplug/Makefile.am: + * ext/mpeg2enc/Makefile.am: + * ext/mplex/.gitignore: + * ext/mplex/Makefile.am: + * ext/musepack/Makefile.am: + * ext/neon/Makefile.am: + * ext/ofa/Makefile.am: + * ext/openal/Makefile.am: + * ext/opencv/Makefile.am: + * ext/openexr/Makefile.am: + * ext/openh264/Makefile.am: + * ext/openjpeg/Makefile.am: + * ext/openmpt/Makefile.am: + * ext/openni2/Makefile.am: + * ext/opus/Makefile.am: + * ext/resindvd/Makefile.am: + * ext/rsvg/Makefile.am: + * ext/rtmp/Makefile.am: + * ext/sbc/Makefile.am: + * ext/sctp/Makefile.am: + * ext/smoothstreaming/Makefile.am: + * ext/sndfile/Makefile.am: + * ext/soundtouch/Makefile.am: + * ext/spandsp/Makefile.am: + * ext/srt/Makefile.am: + * ext/srtp/.gitignore: + * ext/srtp/Makefile.am: + * ext/teletextdec/Makefile.am: + * ext/ttml/Makefile.am: + * ext/voaacenc/Makefile.am: + * ext/voamrwbenc/Makefile.am: + * ext/wayland/.gitignore: + * ext/wayland/Makefile.am: + * ext/webp/Makefile.am: + * ext/webrtc/Makefile.am: + * ext/webrtcdsp/Makefile.am: + * ext/wildmidi/Makefile.am: + * ext/wpe/Makefile.am: + * ext/x265/Makefile.am: + * ext/zbar/Makefile.am: + * gst-libs/Makefile.am: + * gst-libs/gst/Makefile.am: + * gst-libs/gst/adaptivedemux/Makefile.am: + * gst-libs/gst/audio/Makefile.am: + * gst-libs/gst/basecamerabinsrc/Makefile.am: + * gst-libs/gst/codecparsers/Makefile.am: + * gst-libs/gst/insertbin/Makefile.am: + * gst-libs/gst/interfaces/.gitignore: + * gst-libs/gst/interfaces/Makefile.am: + * gst-libs/gst/isoff/Makefile.am: + * gst-libs/gst/mpegts/.gitignore: + * gst-libs/gst/mpegts/Makefile.am: + * gst-libs/gst/opencv/Makefile.am: + * gst-libs/gst/player/Makefile.am: + * gst-libs/gst/sctp/Makefile.am: + * gst-libs/gst/uridownloader/Makefile.am: + * gst-libs/gst/vulkan/.gitignore: + * gst-libs/gst/wayland/Makefile.am: + * gst-libs/gst/webrtc/Makefile.am: + * gst/Makefile.am: + * gst/accurip/Makefile.am: + * gst/adpcmdec/Makefile.am: + * gst/adpcmenc/Makefile.am: + * gst/aiff/Makefile.am: + * gst/asfmux/Makefile.am: + * gst/audiobuffersplit/Makefile.am: + * gst/audiofxbad/Makefile.am: + * gst/audiolatency/Makefile.am: + * gst/audiomixmatrix/Makefile.am: + * gst/audiovisualizers/Makefile.am: + * gst/autoconvert/Makefile.am: + * gst/bayer/Makefile.am: + * gst/camerabin2/Makefile.am: + * gst/coloreffects/Makefile.am: + * gst/debugutils/Makefile.am: + * gst/dvbsuboverlay/Makefile.am: + * gst/dvdspu/.gitignore: + * gst/dvdspu/Makefile.am: + * gst/faceoverlay/Makefile.am: + * gst/festival/Makefile.am: + * gst/fieldanalysis/Makefile.am: + * gst/freeverb/Makefile.am: + * gst/frei0r/Makefile.am: + * gst/gaudieffects/Makefile.am: + * gst/gdp/Makefile.am: + * gst/geometrictransform/Makefile.am: + * gst/id3tag/Makefile.am: + * gst/inter/.gitignore: + * gst/inter/Makefile.am: + * gst/interlace/Makefile.am: + * gst/ivfparse/Makefile.am: + * gst/ivtc/Makefile.am: + * gst/jp2kdecimator/Makefile.am: + * gst/jpegformat/Makefile.am: + * gst/librfb/Makefile.am: + * gst/midi/Makefile.am: + * gst/mpegdemux/Makefile.am: + * gst/mpegpsmux/Makefile.am: + * gst/mpegtsdemux/Makefile.am: + * gst/mpegtsmux/Makefile.am: + * gst/mpegtsmux/tsmux/Makefile.am: + * gst/mxf/Makefile.am: + * gst/netsim/Makefile.am: + * gst/onvif/Makefile.am: + * gst/pcapparse/Makefile.am: + * gst/pnm/Makefile.am: + * gst/proxy/Makefile.am: + * gst/rawparse/Makefile.am: + * gst/removesilence/Makefile.am: + * gst/rist/Makefile.am: + * gst/rtp/Makefile.am: + * gst/sdp/Makefile.am: + * gst/segmentclip/Makefile.am: + * gst/siren/Makefile.am: + * gst/smooth/.gitignore: + * gst/smooth/Makefile.am: + * gst/speed/.gitignore: + * gst/speed/Makefile.am: + * gst/subenc/Makefile.am: + * gst/timecode/Makefile.am: + * gst/videofilters/Makefile.am: + * gst/videoframe_audiolevel/Makefile.am: + * gst/videoparsers/Makefile.am: + * gst/videosignal/Makefile.am: + * gst/vmnc/Makefile.am: + * gst/y4m/Makefile.am: + * gst/yadif/Makefile.am: + * m4/.gitignore: + * m4/Makefile.am: + * m4/README: + * m4/a52.m4: + * m4/aalib.m4: + * m4/as-ffmpeg.m4: + * m4/as-liblame.m4: + * m4/as-slurp-ffmpeg.m4: + * m4/check-libheader.m4: + * m4/freetype2.m4: + * m4/gconf-2.m4: + * m4/gst-fionread.m4: + * m4/gst-sdl.m4: + * m4/gst-sid.m4: + * m4/libgcrypt.m4: + * m4/libmikmod.m4: + * m4/lrint.m4: + * m4/lrintf.m4: + * pkgconfig/Makefile.am: + * po/.gitignore: + * po/Makevars: + * po/POTFILES: + * sys/Makefile.am: + * sys/androidmedia/Makefile.am: + * sys/applemedia/Makefile.am: + * sys/bluez/Makefile.am: + * sys/d3dvideosink/Makefile.am: + * sys/decklink/Makefile.am: + * sys/directsound/Makefile.am: + * sys/dshowdecwrapper/Makefile.am: + * sys/dshowsrcwrapper/Makefile.am: + * sys/dshowvideosink/Makefile.am: + * sys/dvb/Makefile.am: + * sys/fbdev/Makefile.am: + * sys/ipcpipeline/Makefile.am: + * sys/kms/Makefile.am: + * sys/msdk/Makefile.am: + * sys/nvcodec/Makefile.am: + * sys/opensles/Makefile.am: + * sys/shm/Makefile.am: + * sys/tinyalsa/Makefile.am: + * sys/uvch264/Makefile.am: + * sys/wasapi/Makefile.am: + * sys/winks/Makefile.am: + * sys/winscreencap/Makefile.am: + * tests/Makefile.am: + * tests/check/.gitignore: + * tests/check/Makefile.am: + * tests/check/elements/.gitignore: + * tests/check/generic/.gitignore: + * tests/check/libs/.gitignore: + * tests/check/pipelines/.gitignore: + * tests/examples/Makefile.am: + * tests/examples/audiomixmatrix/Makefile.am: + * tests/examples/avsamplesink/.gitignore: + * tests/examples/avsamplesink/Makefile.am: + * tests/examples/camerabin2/.gitignore: + * tests/examples/camerabin2/Makefile.am: + * tests/examples/codecparsers/Makefile.am: + * tests/examples/directfb/.gitignore: + * tests/examples/directfb/Makefile.am: + * tests/examples/ipcpipeline/Makefile.am: + * tests/examples/mpegts/Makefile.am: + * tests/examples/mxf/.gitignore: + * tests/examples/mxf/Makefile.am: + * tests/examples/opencv/Makefile.am: + * tests/examples/uvch264/Makefile.am: + * tests/examples/waylandsink/Makefile.am: + * tests/examples/webrtc/Makefile.am: + * tests/files/Makefile.am: + * tests/icles/.gitignore: + * tests/icles/Makefile.am: + * tools/Makefile.am: + Remove autotools build system + +2019-10-14 02:22:18 -0500 Matthew Waters + + * sys/decklink/gstdecklinkvideosink.cpp: + * sys/decklink/gstdecklinkvideosink.h: + decklink: fix timestamp tracking when pausing + play->pause->sleep()->play would result in late frames being scheduled + +2019-09-04 16:48:29 +0200 Philipp Zabel + + * gst-libs/gst/codecparsers/gsth264parser.c: + * gst-libs/gst/codecparsers/gsth264parser.h: + codecparsers: h264: record pic_order_cnt elements size + Some hardware decoders, for example Hantro G1, have to be told the + size of the pic_order_cnt related syntax elements pic_order_cnt_lsb, + delta_pic_order_cnt_bottom, delta_pic_order_cnt[0], and + delta_pic_order_cnt[1] in bits. + +2019-09-04 15:57:30 +0200 Philipp Zabel + + * gst-libs/gst/codecparsers/gsth264parser.c: + * gst-libs/gst/codecparsers/gsth264parser.h: + codecparsers: h264: record dec_ref_pic_marking() size + Some hardware decoders, for example Hantro G1, have to be told the size + of the dec_ref_pic_marking() syntax element in bits. Record the size so + it can be passed on to the hardware. + +2019-09-20 20:14:57 +0900 Seungha Yang + + * gst-libs/gst/codecparsers/gsth265parser.c: + * gst-libs/gst/codecparsers/gsth265parser.h: + h265parser: Calculate short term RPS size in slice header + The calculated size of short_term_ref_pic_set is not a part of + HEVC syntax but the value is used by some stateless decoders + (e.g., vaapi, dxva, vdpau and nvdec) for the purpose of skipping + parsing the syntax by the accelerator. + +2019-10-07 10:36:37 +0900 Seungha Yang + + * gst-libs/gst/codecparsers/gsth265parser.h: + h265parser: Add H265 slice segment header documentation + Adding brief description for each value. + +2019-09-11 17:59:37 +0900 Seungha Yang + + * gst-libs/gst/codecparsers/gsth264parser.c: + * gst-libs/gst/codecparsers/gsth264parser.h: + h264parser: Expose parsed GstH264PPS::pic_scaling_matrix_present_flag + +2019-08-27 20:34:48 +0900 Seungha Yang + + * gst-libs/gst/codecparsers/gsth264parser.c: + * gst-libs/gst/codecparsers/gsth264parser.h: + h264parser: Expose all parsed flags of slice header + Add num_ref_idx_active_override_flag and sp_for_switch_flag to + member of GstH264SliceHdr. No reason to hiding them and + some decoder implementations (e.g., DXVA) rely on externally parsed header + data which can be provided by h264parser. + +2019-10-09 14:00:01 +0800 Haihao Xiang + + * sys/msdk/gstmsdkallocator_libva.c: + * sys/msdk/gstmsdksystemmemory.c: + * sys/msdk/gstmsdkvideomemory.c: + msdk: return the right pointer + The first channel in memory for MFX_FOURCC_RGB4 (VA_FOURCC_ARGB or + GST_VIDEO_FORMAT_BGRA) is B, not A. In MSDK, channle B is used to access + data for RGB4 surface. In addition, the returned pointers for + MFX_FOURCC_AYUV and MFX_FOURCC_Y410 in gst_msdk_video_memory_map_full + were wrong too before this fix. + +2019-10-07 08:39:06 -0700 Josep Torra + + * sys/msdk/gstmsdkenc.c: + msdkenc: handle bitrate changes in playing state + When the bitrate is changed in playing state the encoder issues a reconfig + that drains and recreates the underlaying hw encoder instance. + With this set of changes we ensure that all this work is only made when + the bitrate did actually change. It also tries to reuse the vpp buffer + pool and fixes the pool leak spotted when testing this feature. + +2019-09-17 01:52:54 +0200 Mathieu Duponchelle + + * ext/mdns/gstmicrodns.c: + * ext/mdns/gstmicrodnsdevice.c: + * ext/mdns/gstmicrodnsdevice.h: + * ext/mdns/meson.build: + * ext/meson.build: + * meson_options.txt: + ext: add libmicrodns-based mdns device provider + The provider for now only detects and handles rtsp devices, but + more protocols should be easy to add. + +2019-10-08 09:40:06 +0800 Haihao Xiang + + * sys/msdk/gstmsdkh265enc.c: + msdkh265enc: add the missing profile string + +2019-10-07 14:21:58 +0900 Seungha Yang + + * ext/hls/gsthlssink2.c: + hlssink2: Respect requested max-files property for decision on removing old fragments from disk + hlssink2 defined "max-files" property to decide the maximum number + of fragments which should be stored in disk. But we've not used + the property. Instead, the size has been maintained by "playlist-length". + Since "max-files" and "playlist-length" have different meaning, + the decision should be done by "max-files" property. + For example, an user might want expose only 3 fragments via playlist + but might want to keep more files than 3 in disk. + +2019-10-07 00:05:08 +1100 Matthew Waters + + * ext/assrender/gstassrender.c: + ass: avoid infinite unref loop with bad data + A classic case of not updating the next item to iterate after deleting + it from the singly linked list. + Only ever hit with a text buffer with GST_CLOCK_TIME_NONE for either the + timestamp or duration. + +2019-09-17 19:56:23 +0900 Seungha Yang + + * sys/d3d11/gstd3d11window.c: + d3d11window: Protect registration/creation of WIN32 window + Querying existing window class info and creation of window object + should be protected since they are not thread safe. + +2019-10-04 21:15:15 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.c: + * sys/d3d11/gstd3d11window.c: + * sys/d3d11/gstd3d11window.h: + d3d11videosink: Don't try to post error message by d3d11window self + The d3d11window isn't GstElement. To post error message, proxy it + to d3d11videosink instead. + +2019-10-04 01:32:34 +0200 Alexandru Băluț + + * pkgconfig/meson.build: + pkgconfig: Fix gstreamer-bad-transcoder-1.0.pc generation + +2019-10-01 11:00:02 +0200 Víctor Manuel Jáquez Leal + + * sys/msdk/gstmsdkenc.c: + * sys/msdk/gstmsdkh265enc.c: + msdkenc: guard MFX_FOURCC_Y410 with MFX version 1027 + +2019-10-01 15:36:29 +0900 Seungha Yang + + * ext/hls/gsthlssink.c: + * ext/hls/gsthlssink.h: + * ext/hls/gsthlssink2.c: + * ext/hls/gsthlssink2.h: + * ext/hls/gstm3u8playlist.h: + hlssink,hlssink2: Ensure writing ENDLIST tag at the end + hlssink* elements could be finalized without EOS event, and in that case + the final playlist might not include the EXT-X-ENDLIST tag. + Since missing ENDLIST tag means it's live stream, but we did't intend it, + hlssink* elements should put the tag at the end. + +2019-09-26 09:52:14 +0800 Haihao Xiang + + * sys/msdk/gstmsdkdec.c: + msdkdec: set lockable flag + When postpone_free_surface is TRUE, the output buffer is not writable, + however the base decoder needs a writable buffer as output buffer, + otherwise it will make a copy of the output buffer. As the underlying + memory is always lockable, so we may set the LOCKABLE flag for this buffer + to avoid buffer copy in the base class. + The refcount of the output buffer is 1 when postpone_free_surface is + FALSE, so needn't set the LOCKABLE flag for this case. + +2019-09-30 10:13:56 +0800 Haihao Xiang + + * sys/msdk/gstmsdkenc.c: + * sys/msdk/gstmsdkh265enc.c: + msdkh265enc: add support for Y410 in sink pad + Sample pipeline: + gst-launch-1.0 videotestsrc ! video/x-raw,format=Y410 ! + msdkh265enc low-power=1 ! filesink location=output.h265 + +2019-09-30 09:48:26 +0800 Haihao Xiang + + * sys/msdk/gstmsdkenc.c: + * sys/msdk/gstmsdkh265enc.c: + msdkh265enc: add support for VUYA in sink pad + sample pipelie: + gst-launch-1.0 videotestsrc ! video/x-raw,format=VUYA ! + msdkh265enc low-power=1 ! filesink location=output.h265 + +2019-09-30 08:57:42 +0800 Haihao Xiang + + * sys/msdk/gstmsdkenc.c: + * sys/msdk/gstmsdkh265enc.c: + msdkenc: clean up code by using switch + It is convenient for us to add support for new formats in future, there + is no change in functionality. + +2019-09-30 09:09:23 +0800 Haihao Xiang + + * sys/msdk/gstmsdkenc.c: + * sys/msdk/gstmsdkvc1dec.c: + msdk: remove some dead code + +2019-08-06 21:08:12 +0100 olivier.crete@collabora.com + + * ext/wayland/wlvideoformat.c: + wayland: Add more DRM formats + Add DRM format equivalents that we were missing compared + to our caps. + +2019-08-06 19:09:54 +0100 olivier.crete@collabora.com + + * ext/wayland/wlvideoformat.c: + * ext/wayland/wlwindow.c: + wayland: Drop big-endian version of the DRM formats + They were a big in some big-endian implementations + +2019-08-23 13:41:54 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.c: + * sys/d3d11/gstd3d11window.c: + d3d11videosink: Use pixel aspect ratio to setup window draw area + ... instead of calculated display ratio from given PAR and DAR. + d3d11window calculates output display ratio + to decide padding area per window resize event. In the formula, + actual PAR is required to handle both 1:1 PAR and non-1:1 PAR. + +2019-09-24 20:29:21 +0200 Fabian Greffrath + + * ext/fluidsynth/gstfluiddec.c: + fluidsynth: add sf3 to soundfont search path + In Debian, soundfonts in SF3 format (i.e. the same as SF2 format but + with Ogg/Vorbis-compressed samples) are installed into + /usr/share/sounds/sf3. Soundfonts in SF3 format are supported since + FluidSynth 1.1.7 (released in Feb 2018). + +2019-09-25 21:36:58 +0900 Seungha Yang + + * gst-libs/gst/vulkan/gstvkdisplay.c: + * gst-libs/gst/vulkan/meson.build: + vulkan: Fix build on Windows + * Fix meson build script for Windows. Since the Vulkan dependency + object was declared by us in case of Windows, the dependency object + shouldn't be used for finding header + * Fix build error by including Windows specific header + gstvkdisplay.c(563): error C2065: 'VK_KHR_WIN32_SURFACE_EXTENSION_NAME': undeclared identifier + +2019-09-24 17:24:38 +1000 Matthew Waters + + * ext/vulkan/meson.build: + * ext/vulkan/vkcolorconvert.c: + * ext/vulkan/vkcolorconvert.h: + * ext/vulkan/vkelementutils.c: + * ext/vulkan/vkelementutils.h: + * ext/vulkan/vkimageidentity.c: + * ext/vulkan/vkviewconvert.c: + * gst-libs/gst/vulkan/gstvkimagememory.c: + * gst-libs/gst/vulkan/gstvkimagememory.h: + * gst-libs/gst/vulkan/gstvkimageview.c: + * gst-libs/gst/vulkan/gstvkimageview.h: + * gst-libs/gst/vulkan/meson.build: + * gst-libs/gst/vulkan/vulkan.h: + * gst-libs/gst/vulkan/vulkan_fwd.h: + vulkan: remove VkImageView from the memory + There can be multiple views per image for different subresource ranges + or planes in multi-planer images. + +2019-09-24 13:53:22 +1000 Matthew Waters + + * ext/vulkan/vkcolorconvert.c: + * ext/vulkan/vkfullscreenrender.c: + * ext/vulkan/vkviewconvert.c: + * gst-libs/gst/vulkan/gstvkbuffermemory.c: + * gst-libs/gst/vulkan/gstvkbuffermemory.h: + * gst-libs/gst/vulkan/gstvkbufferpool.c: + * tests/check/libs/vkmemory.c: + vkbuffer: remove buffer view from the memory + It's only really useful for texture buffers which we currently do not + use. + +2019-09-24 13:52:17 +1000 Matthew Waters + + * gst-libs/gst/vulkan/gstvkconfig.h.meson: + build/vulkan: fix copy-paste error in gstvkconfig.h + +2019-09-18 23:49:08 +1000 Matthew Waters + + * gst-libs/gst/vulkan/cocoa/gstvkdisplay_cocoa.h: + * gst-libs/gst/vulkan/cocoa/gstvkwindow_cocoa.h: + * gst-libs/gst/vulkan/gstvkapi.h: + * gst-libs/gst/vulkan/gstvkcommandpool-private.h: + * gst-libs/gst/vulkan/ios/gstvkdisplay_ios.h: + * gst-libs/gst/vulkan/ios/gstvkwindow_ios.h: + * gst-libs/gst/vulkan/meson.build: + * gst-libs/gst/vulkan/wayland/gstvkdisplay_wayland.h: + * gst-libs/gst/vulkan/wayland/gstvkwindow_wayland.h: + * gst-libs/gst/vulkan/win32/gstvkwindow_win32.h: + * gst-libs/gst/vulkan/xcb/gstvkdisplay_xcb.h: + * gst-libs/gst/vulkan/xcb/gstvkwindow_xcb.h: + vulkan: remove the winsys-specific headers from gst/vulkan/vulkan.h + Allows not having wayland, xcb, Cocoa, UIKit, windows.h included in the + public GstVulkan API. + +2019-09-24 11:25:00 +0300 Vivia Nikolaidou + + * gst/debugutils/gsterrorignore.c: + errorignore: Added convert-error signal + The convert-error signal is emitted whenever we get a GstFlowReturn + other than GST_FLOW_OK. The handler can then decide what to convert that + into - for instance, return the same GstFlowReturn to not convert it. + The default handler will act according to the ignore-error, + ignore-notlinked, ignore-notnegotiated and convert-to properties. If a + handler is connected, these properties are ignored. + +2019-09-24 10:29:44 +1000 Matthew Waters + + * gst/rist/gstristsink.c: + * gst/rtp/gstrtpsink.c: + build: fix werror build with newer gcc + In file included from ../../../../dist/linux_x86_64/include/gstreamer-1.0/gst/gstbin.h:27, + from ../../../../dist/linux_x86_64/include/gstreamer-1.0/gst/gst.h:35, + from ../gst/rtp/gstrtpsink.h:23, + from ../gst/rtp/gstrtpsink.c:49: + In function ‘gst_rtp_sink_start’, + inlined from ‘gst_rtp_sink_change_state’ at ../gst/rtp/gstrtpsink.c:509:11: + ../../../../dist/linux_x86_64/include/gstreamer-1.0/gst/gstelement.h:422:18: error: ‘%s’ directive argument is null [-Werror=format-overflow=] + 422 | gchar *__txt = _gst_element_error_printf text; \ + ../gst/rtp/gstrtpsink.c:476:3: note: in expansion of macro ‘GST_ELEMENT_ERROR’ + 476 | GST_ELEMENT_ERROR (self, RESOURCE, NOT_FOUND, + | ^~~~~~~~~~~~~~~~~ + ../gst/rtp/gstrtpsink.c: In function ‘gst_rtp_sink_change_state’: + ../gst/rtp/gstrtpsink.c:477:37: note: format string is defined here + 477 | ("Could not resolve hostname '%s'", remote_addr), + | ^~ + In file included from ../../../../dist/linux_x86_64/include/gstreamer-1.0/gst/gstbin.h:27, + from ../../../../dist/linux_x86_64/include/gstreamer-1.0/gst/gst.h:35, + from ../../../../dist/linux_x86_64/include/gstreamer-1.0/gst/rtp/gstrtpdefs.h:27, + from ../../../../dist/linux_x86_64/include/gstreamer-1.0/gst/rtp/rtp.h:25, + from ../gst/rist/gstristsink.c:72: + In function ‘gst_rist_sink_setup_rtcp_socket’, + inlined from ‘gst_rist_sink_start’ at ../gst/rist/gstristsink.c:658:10, + inlined from ‘gst_rist_sink_change_state’ at ../gst/rist/gstristsink.c:801:13: + ../../../../dist/linux_x86_64/include/gstreamer-1.0/gst/gstelement.h:422:18: error: ‘%s’ directive argument is null [-Werror=format-overflow=] + 422 | gchar *__txt = _gst_element_error_printf text; \ + ../gst/rist/gstristsink.c:595:3: note: in expansion of macro ‘GST_ELEMENT_ERROR’ + 595 | GST_ELEMENT_ERROR (sink, RESOURCE, NOT_FOUND, + | ^~~~~~~~~~~~~~~~~ + ../gst/rist/gstristsink.c: In function ‘gst_rist_sink_change_state’: + ../gst/rist/gstristsink.c:596:37: note: format string is defined here + 596 | ("Could not resolve hostname '%s'", remote_addr), + | ^~ + +2019-09-09 13:40:53 +0800 Haihao Xiang + + * sys/msdk/gstmsdkallocator_libva.c: + * sys/msdk/gstmsdkcontext.h: + * sys/msdk/gstmsdkvideomemory.c: + * sys/msdk/gstmsdkvideomemory.h: + msdk: fix for mfx frame alloc response + Both MSDK and this plugin use mfxFrameAllocResponse for video and DMABuf + memory, it is possible that some GST buffers are still in use when calling + gst_msdk_frame_free, so add a reference count in the wrapper of + mfxFrameAllocResponse (GstMsdkAllocResponse) to make sure the underlying + mfx resources are still available if the corresponding buffer pool is in + use. + In addtion, currently all allocators for input or output share the same + mfxFrameAllocResponse pointer in an element, so it is possible that + the content of mfxFrameAllocResponse is updated for a new caps then all + GST buffers allocated from an old allocator will use this new content of + mfxFrameAllocResponse, which will result in unexpected behavior. In this + fix, we save the the content of mfxFrameAllocResponse in the corresponding + tructure to avoid such issue + Sample pipeline: + gst-launch-1.0 filesrc location=vp9_multi_resolutions.ivf ! ivfparse ! msdkvp9dec ! + msdkvpp ! video/x-raw\(memory:DMABuf\),format=NV12 ! glimagesink + +2019-09-11 10:49:10 +0800 Haihao Xiang + + * sys/msdk/gstmsdkallocator_libva.c: + * sys/msdk/gstmsdkcontext.c: + * sys/msdk/gstmsdkcontext.h: + msdk: don't cache mfxFrameAllocResponse pointer + Otherwise it is possible that different wrappers share the same + mfxFrameAllocResponse pointer, so instead of caching the pointer, we may + cache the content of mfxFrameAllocResponse + +2019-07-02 15:21:24 +0800 Haihao Xiang + + * sys/msdk/gstmsdkdec.c: + * sys/msdk/gstmsdkdec.h: + * sys/msdk/gstmsdkvc1dec.c: + msdkdec: postpone surface free for VC1 + For a skipped frame in VC1, MSDK returns the mfx surface of the reference + frame, so we have to make sure the corresponding surface for the + reference frame is not freed. In this fix, we postpone surface free because + we don't know whether a surface is referenced + Before this fix, the error is like as below: + New clock: GstSystemClock + 0:00:00.181793130 23098 0x55f8a9d622d0 ERROR msdkdec + gstmsdkdec.c:622:gst_msdkdec_finish_task: Couldn't find the + cached MSDK surface + Sample pipeline: + gst-launch-1.0 filesrc location=input_has_skipped_frame.wmv ! asfdemux ! + vc1parse ! msdkvc1dec ! glimagesink + +2019-09-17 14:42:51 +0800 Haihao Xiang + + * sys/msdk/gstmsdkdec.c: + msdkdec: release the surface if this surface is not in use + If the surface is not in use, we may release it even if GST_FLOW_OK is going + to be returned, which may avoid the issue of failing to get surface + available + This fixes the regression caused by commit c05acf4 + +2019-08-01 13:48:54 +0800 Haihao Xiang + + * sys/msdk/msdk.c: + msdk: adjust the stride align + GstAllocationParams::align is set to 31 in msdkdec/msdken/msdkvpp, hence + the stride align should be greater than or equal to 31, otherwise it + will result in issue + https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/861 + (msdk: "GStreamer-CRITICAL: gst_buffer_resize_range failed" SPAM), + In addition, the stride should match the pitch alignment in the media driver, + otherwise it will result in some issues when a buffer is shared between + different elements, e.g. the NV12 issue mentioned in commit 3f2314a, which + can be reproduced by `gst-launch-1.0 vidoetestsrc ! msdkvpp ! + video/x-raw\(memory:DMABuf\),format=NV12 ! glimagesink` + Fixed https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/861 + +2019-09-20 15:35:09 +0000 Marc Leeman + + * gst/rtp/gstrtpsink.c: + * gst/rtp/gstrtpsrc.c: + * gst/rtp/gstrtpsrc.h: + * tests/check/elements/rtpsink.c: + * tests/check/elements/rtpsrc.c: + rtpmanagerbad: allow creation of elements at initialisation + +2019-09-17 22:24:04 +1000 Matthew Waters + + * ext/vulkan/vkcolorconvert.c: + * ext/vulkan/vkdownload.c: + * ext/vulkan/vkimageidentity.c: + * ext/vulkan/vkupload.c: + * ext/vulkan/vkviewconvert.c: + * gst-libs/gst/vulkan/gstvkcommandbuffer.c: + * gst-libs/gst/vulkan/gstvkcommandbuffer.h: + * gst-libs/gst/vulkan/gstvkcommandpool-private.h: + * gst-libs/gst/vulkan/gstvkcommandpool.c: + * gst-libs/gst/vulkan/gstvkcommandpool.h: + * gst-libs/gst/vulkan/gstvkqueue.c: + * gst-libs/gst/vulkan/gstvkswapper.c: + * gst-libs/gst/vulkan/gstvktrash.c: + * gst-libs/gst/vulkan/gstvktrash.h: + * gst-libs/gst/vulkan/meson.build: + * gst-libs/gst/vulkan/vulkan.h: + * gst-libs/gst/vulkan/vulkan_fwd.h: + * tests/check/libs/vkcommandpool.c: + * tests/check/meson.build: + vulkan: implement command buffer reuse + Using a similar design for reference counting as + GstBuffer/GstBufferPool. + +2019-09-18 16:27:35 -0400 Nicolas Dufresne + + * gst/rist/gstristsrc.c: + ristsrc: Fix comment about odd/even ports + It is the RTP port that is even, and the RTCP port being +1 (hence odd). + +2019-09-18 18:43:41 +0900 Seungha Yang + + * sys/d3d11/gstd3d11device.c: + d3d11: Use g_cond_broadcast() to wake up waiting threads + gst_d3d11_device_thread_add() can be called concurrently from different + threads so the cond signal should reach to all waiting threads. + +2019-09-16 15:29:26 +1000 Matthew Waters + + * ext/vulkan/gstvulkan.c: + * ext/vulkan/meson.build: + * ext/vulkan/vkdeviceprovider.c: + * ext/vulkan/vkdeviceprovider.h: + * gst-libs/gst/vulkan/gstvkphysicaldevice.c: + * tests/check/elements/vkdeviceprovider.c: + * tests/check/meson.build: + vulkan: add device provider implementation + +2019-09-16 13:00:34 +1000 Matthew Waters + + * ext/vulkan/vksink.c: + vulkansink: attempt a context query for a device + +2019-09-16 12:59:08 +1000 Matthew Waters + + * ext/vulkan/vkdownload.c: + * ext/vulkan/vkfullscreenrender.c: + * ext/vulkan/vkupload.c: + * gst-libs/gst/vulkan/gstvkdebug.c: + * gst-libs/gst/vulkan/gstvkdebug.h: + * gst-libs/gst/vulkan/gstvkdevice.c: + * gst-libs/gst/vulkan/gstvkdevice.h: + * gst-libs/gst/vulkan/gstvkinstance.c: + * gst-libs/gst/vulkan/gstvkmemory.c: + * gst-libs/gst/vulkan/gstvkphysicaldevice.c: + * gst-libs/gst/vulkan/gstvkphysicaldevice.h: + * gst-libs/gst/vulkan/gstvkswapper.c: + * gst-libs/gst/vulkan/meson.build: + * gst-libs/gst/vulkan/vulkan.h: + * gst-libs/gst/vulkan/vulkan_fwd.h: + * tests/check/libs/vkdevice.c: + * tests/check/libs/vkmemory.c: + vulkan: split physical device from logical device + +2019-09-16 11:24:13 +1000 Matthew Waters + + * gst-libs/gst/vulkan/gstvkdebug-private.h: + * gst-libs/gst/vulkan/gstvkdebug.c: + * gst-libs/gst/vulkan/gstvkdebug.h: + * gst-libs/gst/vulkan/gstvkdevice.c: + vulkan: expose various flags to string methods + +2019-09-16 11:21:55 +1000 Matthew Waters + + * ext/vulkan/vkdownload.c: + * ext/vulkan/vkfullscreenrender.c: + * ext/vulkan/vksink.c: + * ext/vulkan/vkupload.c: + * gst-libs/gst/vulkan/gstvkdevice.c: + * gst-libs/gst/vulkan/gstvkdevice.h: + * gst-libs/gst/vulkan/gstvkdisplay.c: + * gst-libs/gst/vulkan/gstvkdisplay.h: + * gst-libs/gst/vulkan/gstvkinstance.c: + * gst-libs/gst/vulkan/gstvkinstance.h: + * gst-libs/gst/vulkan/gstvkqueue.c: + * gst-libs/gst/vulkan/gstvkqueue.h: + * gst-libs/gst/vulkan/gstvkutils.c: + * gst-libs/gst/vulkan/gstvkutils.h: + vulkan: only pass the device/instance/display in to *_handle_*() functions + We don't need to change the pointer value in these functions. + +2019-09-16 10:52:53 +0800 Haihao Xiang + + * sys/msdk/gstmsdkenc.c: + msdkenc: remove unneeded label + +2019-09-09 15:28:32 +0200 VaL Doroshchuk + + * gst/camerabin2/gstviewfinderbin.c: + GstViewfinderBin: Fix typo in videoscale's name element + If user's video sink has been changed, it is unable to fetch + videoscale element by name and link to the video sink. + +2019-08-26 16:48:13 +1000 Matthew Waters + + * sys/applemedia/videotexturecache.h: + applemedia/videocache: remove unimplemented/used upload function + +2019-09-11 23:09:35 +1000 Matthew Waters + + * gst-libs/gst/vulkan/ios/gstvkwindow_ios.m: + vulkan/window/ios: fix race on window startup + 1. The iOS create_surface implementation needs to call out to the main + thread to create the window (UIKit requirement) + 2. get_surface() can be called and will attempt to create the VkSurface + from an invalid view/layer. + Also pass the layer for MoltenVK so we don't get pesky 'UIView function + not called on main thread' warnings. + +2019-09-12 00:10:37 +1000 Matthew Waters + + * gst-libs/gst/vulkan/gstvkdisplay.c: + vulkan: create the macos/ios-specific displays + +2019-09-12 15:29:05 +1000 Matthew Waters + + * gst-libs/gst/vulkan/meson.build: + vulkan: install public gstvkdebug.h header + +2019-09-11 15:06:58 +0800 Haihao Xiang + + * sys/msdk/gstmsdkdec.c: + msdkdec: set pointer to NULL to avoid freeing an used surface + The surface should be cached in the surface list when GST_FLOW_OK is + going to be returned + This fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1051 + +2019-08-21 12:45:37 +0800 Haihao Xiang + + * sys/msdk/gstmsdkenc.c: + * sys/msdk/gstmsdkvpp.c: + msdk: free mfx frames to avoid memory leaks in encoder and vpp + +2019-09-10 14:44:19 +0800 Haihao Xiang + + * sys/msdk/gstmsdkdec.c: + msdkdec: unref the caps to avoid memory leaks + +2019-08-29 09:31:22 +0800 Haihao Xiang + + * sys/msdk/gstmsdkvpp.c: + msdkvpp: free msdk surfaces to avoid memory leak + +2019-08-21 12:27:57 +0800 Haihao Xiang + + * sys/msdk/gstmsdkvpp.c: + msdkvpp: unref buffer pools + Unref the pools first in caps re-negotiation to avoid memory leak + +2019-08-29 15:28:36 +0800 Haihao Xiang + + * sys/msdk/gstmsdksystemmemory.c: + * sys/msdk/gstmsdkvideomemory.c: + msdk: fix memory leaks in msdk allocators + +2019-09-05 09:05:10 +0800 Fuwei Tang + + * sys/msdk/gstmsdkenc.c: + msdkenc: work-around to avoid zero fps in MediaSDK structure + +2019-09-09 13:42:56 +0800 Fuwei Tang + + * sys/msdk/gstmsdkh265enc.c: + msdkenc: add an extra surface for hevc encoding + For some hevc 10bit 4K encoding cases, the encoding process may be + slow, and MediaSDK surface can't be released in time before one other + available surface is needed. So add an extra surface for hevc encoding + to avoid this issue. + +2019-08-12 19:42:12 +1000 Matthew Waters + + * ext/webrtc/gstwebrtcstats.c: + webrtc/stats: redo considering internal sources + Internal sources seem to be rtp streams we are sending whereas + non-internal sources are the rtp streams we are receiving. Redo the + statistics with that in mind. + +2019-09-12 09:33:44 +1000 Matthew Waters + + * gst-libs/gst/vulkan/gstvkdebug.c: + vulkan: fix build with older API headers + The protected memory flags were only added later as was the + multi-instance flag. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1081 + +2019-09-06 12:52:37 +0900 Seungha Yang + + * tests/examples/meson.build: + * tests/examples/nvcodec/meson.build: + * tests/examples/nvcodec/nvcodec-kb.c: + * tests/examples/nvcodec/nvcodec.c: + * tests/examples/nvcodec/nvcodec.h: + examples: nvcodec: Add example for runtime configuration change with nvcodec + Add new example for testing dynamic change of configuration suce as + resolution and properties. + +2019-08-30 21:35:44 +0900 Seungha Yang + + * sys/nvcodec/gstnvbaseenc.c: + nvenc: Early terminate handle_frame if the last flow was not GST_FLOW_OK + If the last flow was not GST_FLOW_OK, the encoding thread is not running + and there is nothing to pop from GAsyncQueue (this causes deadlock). + To prevent deadlock, just return the handle_frame without further encoding + process if the last flow was not GST_FLOW_OK. Note that the last flow + will be cleared per FLUSH_STOP and STREAM_START event. + +2019-08-20 22:07:30 +0900 Seungha Yang + + * sys/nvcodec/gstnvbaseenc.c: + * sys/nvcodec/gstnvenc.c: + * sys/nvcodec/gstnvh264enc.c: + * sys/nvcodec/gstnvh265enc.c: + nvenc: Add support VUYA format + The addition is very simple. Map NV_ENC_BUFFER_FORMAT_AYUV format + to GST_VIDEO_FORMAT_VUYA and add a condition for the VUYA format. + +2019-08-28 23:46:44 +0900 Seungha Yang + + * sys/nvcodec/gstnvdec.c: + * sys/nvcodec/gstnvdec.h: + nvdec: Add support for mpeg4 video decoding with codec_data + Decoder should handle codec_data of mpeg4 video which includes essential + config data. + +2019-09-11 14:56:00 +0900 Seungha Yang + + * sys/nvcodec/gstnvbaseenc.c: + nvenc: Reduce the number of pre-allocated device memory + The hard-coded upper bound 32 (or 48 depending on resolution) might waste + GPU memory and high resolution encoding causes OUT-OF-MEMORY allocation error + quite easily. This commit calculates the number of required pre-allocated + device memory based on encoding options and it can reduce the amount of device memory + used by nvenc. + +2019-09-11 19:24:50 +1000 Matthew Waters + + * gst-libs/gst/vulkan/gstvkdebug-private.h: + * gst-libs/gst/vulkan/gstvkdebug.c: + * gst-libs/gst/vulkan/gstvkdebug.h: + * gst-libs/gst/vulkan/gstvkdevice.c: + * gst-libs/gst/vulkan/gstvkmemory.c: + * gst-libs/gst/vulkan/meson.build: + * gst-libs/gst/vulkan/vulkan.h: + vulkan: dump most of the device information + Dump anything that can be queried using the physical device like features, + limits, queue properties, memory properties. + +2019-09-11 15:16:45 +0900 Seungha Yang + + * sys/nvcodec/gstnvdec.c: + nvdec: Update plugin description and fix typo + Use consistent description with nvenc, and fix typo s/devide/device/g + +2019-08-18 17:31:53 +0900 Seungha Yang + + * sys/nvcodec/gstnvbaseenc.c: + * sys/nvcodec/gstnvbaseenc.h: + nvenc: Adjust DTS when bframe is enabled + NVDEC driver always uses input timestamp without adjustment + even if bframe encoding was enabled. + So DTS can be larger than PTS when bframe was enabled. + To ensure PTS >= DTS, we should adjust the timestamp manually + based on the PTS difference between the first + encoded frame and the second one. That's also the maximum PTS/DTS + difference. + +2019-09-03 19:46:09 +0900 Seungha Yang + + * sys/nvcodec/gstnvbaseenc.c: + * sys/nvcodec/gstnvbaseenc.h: + nvenc: Add qp-{min,max,const}-{i,p,b} properties + This new properties allows more detailed target QP value setting + +2019-09-03 21:22:08 +0900 Seungha Yang + + * sys/nvcodec/gstnvbaseenc.c: + * sys/nvcodec/gstnvbaseenc.h: + * sys/nvcodec/gstnvenc.c: + * sys/nvcodec/gstnvh264enc.c: + * sys/nvcodec/gstnvh265enc.c: + nvenc: Add properties to support bframe encoding if device supports it + Note that bframe encoding capability varies with GPU architecture + +2019-09-02 14:13:26 +0900 Seungha Yang + + * sys/nvcodec/gstnvbaseenc.c: + * sys/nvcodec/gstnvbaseenc.h: + nvenc: Refactoring internal buffer pool structure + To support rc-lookahead and bframe encoding, nvenc needs one more + staging queue, because NvEncEncodePicture can return NV_ENC_ERR_NEED_MORE_INPUT + but which was not considered so far. + As documented by NVENC programming guide, pending buffers should wait + other inputs until NvEncEncodePicture returns success. + New encoding flow is + - Submit raw picture buffer to encoder with NvEncEncodePicture + - The submitted input/output buffer pair will be queued to pending_queue + - If NvEncEncodePicture returned success, then move all pair in pending_queue + to final stage + - Otherwise, wait more input raw pictures. + Another change is dropping NV_ENC_LOCK_INPUT_BUFFER usage. + So now nvenc always uses CUDA memory input buffer. As a result, + both opengl and system memory handling are unified. + +2019-07-28 15:41:07 +0900 Seungha Yang + + * sys/nvcodec/gstnvbaseenc.c: + nvenc: Remove pointless iteration and cleanup some code + * The number of iteration is always one so the iteration is useless + and that makes code complicated. + * Also defining named structure can code mroe readable. + * g_free is null safe + +2019-09-03 21:33:15 +0900 Seungha Yang + + nvenc: Add more rate-control options + New rate-control modes are introduced (if device can support) + * cbr-ld-hr: CBR low-delay high quality + * cbr-hq: CBR high quality + * vbr-hq: VBR high quality + Also, various configurable rate-control related properties are added. + +2019-09-03 21:28:44 +0900 Seungha Yang + + * sys/nvcodec/gstnvbaseenc.c: + * sys/nvcodec/gstnvbaseenc.h: + * sys/nvcodec/gstnvenc.c: + * sys/nvcodec/gstnvh264enc.c: + * sys/nvcodec/gstnvh264enc.h: + * sys/nvcodec/gstnvh265enc.c: + * sys/nvcodec/gstnvh265enc.h: + nvenc: Add support for weighted prediction option + Note that this property will be exposed only if the device + supports the weighted prediction. + +2019-07-26 16:46:30 +0900 Seungha Yang + + * sys/nvcodec/gstnvbaseenc.c: + * sys/nvcodec/gstnvbaseenc.h: + * sys/nvcodec/gstnvh264enc.c: + * sys/nvcodec/gstnvh264enc.h: + * sys/nvcodec/gstnvh265enc.c: + * sys/nvcodec/gstnvh265enc.h: + nvenc: Add property for AUD insertion + Make AUD insertion configurable option + +2019-09-03 18:46:30 +0900 Seungha Yang + + * sys/nvcodec/gstnvbaseenc.c: + * sys/nvcodec/gstnvbaseenc.h: + * sys/nvcodec/gstnvenc.c: + * sys/nvcodec/gstnvh264enc.c: + * sys/nvcodec/gstnvh264enc.h: + * sys/nvcodec/gstnvh265enc.c: + * sys/nvcodec/gstnvh265enc.h: + nvenc: Refactor class hierarchy to handle device capability dependent options + Introducing new dynamic class between GstNvBaseEncClass and + each subclass to be able to access device specific properties and + capabilities from each subclass implementation side. + +2019-09-11 02:12:55 +0200 Mathieu Duponchelle + + * sys/msdk/meson.build: + msdk: actually use the include dir we compute + +2019-09-10 23:13:17 +0000 Marc Leeman + + * sys/nvcodec/gstnvdec.c: + nvcodec: minor spell corrects in log messages + +2019-08-26 14:54:13 +0900 Seungha Yang + + * sys/msdk/gstmsdkdec.c: + * sys/msdk/gstmsdkenc.c: + * sys/msdk/gstmsdkh265dec.c: + * sys/msdk/gstmsdkh265enc.c: + * sys/msdk/gstmsdkmjpegdec.c: + * sys/msdk/gstmsdkvp9dec.c: + * sys/msdk/gstmsdkvp9enc.c: + * sys/msdk/msdk.h: + msdk: Remove all DMABuf caps features on Windows + Add new macro for sink/src pad template to ensure no DMABuf caps + features are exposed on Windows. Some DMABuf caps features + were not handled by the commit 9ec62418c31cab4072bf173f279234e36eeec596 + +2019-09-04 13:30:37 +0900 Seungha Yang + + * sys/msdk/gstmsdkdec.c: + msdkdec: Do not use video memory on Windows + Like msdkenc, do not use video memory by default on Windows. + +2019-09-04 13:18:38 +0900 Seungha Yang + + * sys/msdk/gstmsdksystemmemory.c: + * sys/msdk/gstmsdkvideomemory.c: + msdk: Allow video and system memory share among buffers + gst_buffer_make_writable() requires exclusive reference to the + GstMemory so the _make_writable() for the msdk buffer will result + to fallback system memory copy, because the msdk memory were initialized + with GST_MEMORY_FLAG_NO_SHARE flag. + Note that, disable sharing GstMemory brings high overhead but actually + the msdk memory objects can be shared over multiple buffers. + If the memory is not shareable, newly added GstAllocator::mem_copy will + create copied msdk memory. + +2019-08-08 11:27:19 +0800 Haihao Xiang + + * sys/msdk/gstmsdkh265dec.c: + msdkh265dec: remove the requirement on profile + Sometimes a HEVC/H265 stream doesn't have a valid profile but MSDK can + handle this stream. Like vaapih265dec, msdkh265dec may advertise the sink + caps without profile + +2019-09-08 21:25:44 +0200 Mark Nauwelaerts + + * ext/wayland/gstwaylandsink.c: + wayland: gracefully handle unknown formats + +2019-09-06 22:21:50 +0900 Wonchul Lee + + * ext/aom/gstav1enc.c: + av1enc: change cpu-used range upto 5 + The speed 6, 7 and 8 has been removed because it's not yet tuned + correctly. + https://aomedia.googlesource.com/aom/+/7ffbf92030baf6886c2486574cca16d60499bbb8 + +2019-09-04 12:54:17 +0300 Askar Safin + + * gst-libs/gst/player/gstplayer.c: + gst-player: fix bug with changing playback direction + Fix gst_event_new_seek call in gst-libs/gst/player/gstplayer.c + If rate >= 0.0, then previous code doesn't set end of segment. So, the end of segment + will be in place where previous seek put it. This is not neccesary end of media file + (in case of reverse playback). So if we play video backward for some time and then + switched to forward playing, we will get EOS somewhere in the middle of media file. + This commit always sets end of segment, thus fixing this bug + +2019-05-24 16:48:45 +0800 Haihao Xiang + + * sys/msdk/gstmsdkdec.c: + msdkdec: output the decoded frame immediately if decoded order is required + DecodedOrder was deprecated in msdk-2017 version, but some customers + still use this for low-latency streaming of non-b-frame encoded streams, + which needs to output the frame at once + +2019-09-02 09:22:10 +0800 Jeffy Chen + + * ext/wayland/wlwindow.c: + Revert "waylandsink: Don't create throwaway empty regions" + This reverts commit 68fa80e83118a7a2be037eb235e5d211912dee0e. + Some wayland servers, especially weston, only expect empty input + region as a request to disable input. + Signed-off-by: Jeffy Chen + +2019-08-21 06:35:30 -0500 Matthew Waters + + * sys/decklink/gstdecklinkaudiosink.cpp: + decklinkaudiosink: Drop late buffers + Asking decklink to render audio data seems to be based entirely on + the sample counts which completely disregards the timestamps + we pass to decklink. As a result, we need to explicitly check + for late buffers and drop them ourselves. + +2019-08-31 18:19:41 +0900 Seungha Yang + + * tests/check/elements/nvenc.c: + tests: nvenc: Test runtime resolution change + +2019-08-31 17:34:13 +0900 Seungha Yang + + * sys/nvcodec/gstnvbaseenc.c: + * sys/nvcodec/gstnvbaseenc.h: + nvenc: Add support runtime resolution change freely + Do not restrict allowed maximum resolution depending on the + initial resolution. If new resolution is larger than previous one, + just re-init encode session. + +2019-08-27 17:04:50 +0800 Wangfei + + * tests/check/libs/h265parser.c: + tests: h265parser: Add test parsing range extension in PPS + +2019-08-19 10:08:46 +0800 Wangfei + + * gst-libs/gst/codecparsers/gsth265parser.c: + h265parse lib: fix missing condition when parse PPS + Follow h265 spec(04/2015), log2_max_transform_skip_block_size_minus2 + should get with condition when transform_skip_enabled_flag is 1. + +2019-08-28 17:26:00 -0700 Sam Gigliotti + + * ext/webrtc/gstwebrtcstats.c: + webrtcbin: Fixed memory leak in gstwebrtcstats + The function _get_stats_from_ice_transport returns a string which must be + freed by the caller. However, _get_stats_from_dtls_transport was ignoring + the return value from this function, resulting in a leak. + Ran this with valgrind. Before this fix there was a leak of 40 bytes each + time this was called. After there was no leak. + +2019-08-30 14:15:43 +1000 Matthew Waters + + * sys/decklink/gstdecklink.cpp: + decklink: fix macos werror build + ../sys/decklink/gstdecklink.cpp:1703:7: error: format specifies type 'long' but the argument has type 'int64_t' (aka 'long long') [-Werror,-Wformat] + persistent_id); + ^~~~~~~~~~~~~~ + /Library/Frameworks/GStreamer.framework/Versions/1.0/include/gstreamer-1.0/gst/gstinfo.h:1070:87: note: expanded from macro 'GST_DEBUG' + #define GST_DEBUG(...) GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_DEBUG, NULL, __VA_ARGS__) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~ + /Library/Frameworks/GStreamer.framework/Versions/1.0/include/gstreamer-1.0/gst/gstinfo.h:646:31: note: expanded from macro 'GST_CAT_LEVEL_LOG' + (GObject *) (object), __VA_ARGS__); \ + ^~~~~~~~~~~ + +2019-08-29 17:19:27 +0900 Seungha Yang + + * sys/nvcodec/gstnvdec.c: + nvdec: Check flow return of the only current handle_frame() to fix seeking issue + Due to uncleared last flow, decoding after seek was never possible + (last_ret == GST_FLOW_FLUSHING). + nvdec dose not need to keep track of the previous flow return, + and actually the interest is data/even flow of the current handle_frame(). + +2019-08-29 20:20:14 +0900 Seungha Yang + + * sys/nvcodec/gstnvdec.c: + nvdec: Fallback to system memory if OpenGL context could not support PBO memory + If the environment could not support OpenGL PBO memory, nvdec will do negotiation + with system memory as fallback. + +2019-08-09 20:19:38 +0900 Seungha Yang + + * sys/nvcodec/gstnvdec.c: + nvdec: Add support dynamic output format change + Implementing ::negotiate() method to support runtime output format + change. If downstream was reconfigured, baseclass will invoke + ::negotiate() method, and nvdec should update output memory + type depending on downstream caps. + +2019-08-09 18:47:14 +0900 Seungha Yang + + * sys/nvcodec/gstnvdec.c: + * sys/nvcodec/gstnvdec.h: + nvdec: Re-negotiate whenever output format is changed + Input stream might be silently changed without ::set_format() call. + Since nvdec has internal parser, nvdec element can figure out the format change + by itself. + +2019-08-09 15:27:54 +0900 Seungha Yang + + * tests/check/elements/nvdec.c: + * tests/check/meson.build: + tests: nvdec: Add test runtime downstream reconfigure + Add test case for output format change + +2019-08-08 10:59:04 +0900 Seungha Yang + + * sys/nvcodec/gstnvdec.c: + nvdec: Add support 4:4:4 and 4:2:0 12bit decoding + Depending on GPU architecture, HEVC decoder can support + 4:4:4 format up to 12 bitdepth. This commit covers VP9 4:2:0 12 bits + decoding also. + +2019-08-08 14:16:07 +0900 Seungha Yang + + * sys/nvcodec/gstnvbaseenc.c: + * sys/nvcodec/gstnvenc.c: + * sys/nvcodec/gstnvenc.h: + * sys/nvcodec/gstnvh264enc.c: + * sys/nvcodec/gstnvh265enc.c: + nvenc: Add support for old drivers which could not understand SDK version 9.0 + Add helper functions to support old drivers + with our previous SDK version 8.1 + +2019-08-08 14:00:08 +0900 Seungha Yang + + * sys/nvcodec/gstnvbaseenc.c: + * sys/nvcodec/gstnvenc.c: + * sys/nvcodec/gstnvenc.h: + nvenc: Use consistent snake case convention + +2019-08-07 23:03:15 +0900 Seungha Yang + + * sys/nvcodec/cuviddec.h: + * sys/nvcodec/nvEncodeAPI.h: + * sys/nvcodec/nvcuvid.h: + nvcodec: Bump SDK header to version 9.0 + The latest Turing architecture (e.g., RTX serise) can support + decoding HEVC 4:4:4 format up to 12bits. + +2019-08-02 01:37:22 +0900 Yeongjin Jeong + + * gst-libs/gst/vulkan/xcb/gstvkdisplay_xcb.c: + * gst-libs/gst/vulkan/xcb/gstvkwindow_xcb.c: + vulkan: Fix some confusing typos + Seems to have been copy pasted from around gl element + +2019-08-09 20:13:59 +0900 Yeongjin Jeong + + * ext/vulkan/vkdownload.c: + * ext/vulkan/vksink.c: + * ext/vulkan/vkupload.c: + vulkan: Don't dereference null pointer when printing error + When printing error message because the function failed, the GError variable + may not be used and it can be NULL. + +2019-08-09 18:43:06 +0900 Yeongjin Jeong + + * gst-libs/gst/vulkan/xcb/gstvkwindow_xcb.c: + vulkan/xcb: Don't try to create xcb window with non-xcb display + Non-xcb display does not have a xcb_connection and trying + to create xcb window with wild pointer can cause segfault. + +2019-08-18 14:09:16 +0900 Seungha Yang + + * sys/nvcodec/gstnvbaseenc.c: + nvenc: Port to GstCudaGraphicsResource + Register openGL resource only once per memory. Also if upstream + provides the registered information, reuse the information + instead of doing it again. This can improve performance dramatically + depending on system since the resource registration might cause + high overhead. + +2019-08-18 13:27:38 +0900 Seungha Yang + + * sys/nvcodec/gstnvdec.c: + nvdec: Port to GstCudaGraphicsResource + Make it possible to share registered graphics resource among nvidia encoders + and decoders. + +2019-08-17 17:45:44 +0900 Seungha Yang + + * sys/nvcodec/gstcudaloader.c: + * sys/nvcodec/gstcudaloader.h: + * sys/nvcodec/gstcudautils.c: + * sys/nvcodec/gstcudautils.h: + * sys/nvcodec/stub/cuda.h: + cudautils: Add GstCudaGraphicsResource structure for better openGL interoperability + Introduce GstCudaGraphicsResource structure to represent registered + CUDA graphics resources and to enable sharing the information among + nvdec and nvenc. This structure can reduce the number of resource + registration which cause high overhead. + +2019-08-17 14:46:00 +0900 Seungha Yang + + * sys/nvcodec/gstnvdec.c: + nvdec: Port to openGL PBO memory + For openGL interoperability, nvdec uses cuGraphicsGLRegisterImage API + which is to register openGL texture image. + Meanwhile nvenc uses cuGraphicsGLRegisterBuffer API to registure openGL buffer object. + That means two kinds of graphics resources are registered per memory + when nvdec/nvenc are configured at the same time. + The graphics resource registration brings possibly high overhead + so the registration should be performed only once per resource + from optimization point of view. + +2019-08-17 14:03:57 +0900 Seungha Yang + + * sys/nvcodec/gstnvdec.c: + nvdec: Filter openGL API version to use + To ensure PBO buffer, openGL API >= 3 is required. + +2019-08-21 16:46:36 +0800 Haihao Xiang + + * sys/msdk/gstmsdkcontext.c: + * sys/msdk/gstmsdkdec.c: + * sys/msdk/gstmsdkenc.c: + msdk: avoid reading data from freed memory + Both g_list_delete_link and g_list_remove remove an element and free it, + so l->next is invalid (catched by valgrind) after calling g_list_delete_link + or g_list_remove + +2019-08-22 10:46:12 -0400 Thibault Saunier + + * docs/plugins/gst_plugins_cache.json: + doc: Update plugin cache + +2015-12-03 12:32:05 +0100 Saunier Thibault + + * data/meson.build: + * data/targets/device/dvd.gep: + * data/targets/file-extension/avi.gep: + * data/targets/file-extension/flv.gep: + * data/targets/file-extension/mkv.gep: + * data/targets/file-extension/mp3.gep: + * data/targets/file-extension/mp4.gep: + * data/targets/file-extension/oga.gep: + * data/targets/file-extension/ogv.gep: + * data/targets/file-extension/webm.gep: + * data/targets/online-service/youtube.gep: + * docs/libs/gst-plugins-bad-libs-sections.txt: + * docs/libs/transcoder/index.md: + * docs/libs/transcoder/sitemap.txt: + * docs/meson.build: + * gst-libs/gst/meson.build: + * gst-libs/gst/transcoder/gsttranscoder.c: + * gst-libs/gst/transcoder/gsttranscoder.h: + * gst-libs/gst/transcoder/meson.build: + * gst-libs/gst/transcoder/transcoder-prelude.h: + * gst/meson.build: + * gst/transcode/gst-cpu-throttling-clock.c: + * gst/transcode/gst-cpu-throttling-clock.h: + * gst/transcode/gsttranscodebin.c: + * gst/transcode/gsttranscoding.h: + * gst/transcode/gsturitranscodebin.c: + * gst/transcode/meson.build: + * meson.build: + * meson_options.txt: + * pkgconfig/gstreamer-bad-transcoder-uninstalled.pc.in: + * pkgconfig/gstreamer-bad-transcoder.pc.in: + * pkgconfig/meson.build: + * tools/gst-transcoder.c: + * tools/meson.build: + * tools/utils.c: + * tools/utils.h: + Import GstTranscoder + +2019-08-23 17:07:43 +1000 Matthew Waters + + * gst-libs/gst/vulkan/gstvkswapper.c: + vulkan/swapper: add a couple of missing g_clear_error()'s + +2019-08-23 17:04:42 +1000 Matthew Waters + + * gst-libs/gst/vulkan/meson.build: + vulkan/build: conditionally depend on Vulkan-1.0.gir + Vulkan-1.0.gir is new in gobject-introspection >= 1.61.1 + +2019-08-23 17:03:20 +1000 Matthew Waters + + * gst-libs/gst/vulkan/gstvkdisplay.c: + vulkandisplay: silence an unused but set error with no enable winsys implementations + +2019-08-23 14:20:59 +1000 Matthew Waters + + * gst-libs/gst/vulkan/gstvkswapper.c: + vulkan/swapper: check queue present return later + During resizes, the VkQueuePresent can return OUT_OF_DATE and if a buffer + is displayed returning OUT_OF_DATE it would error out and stop the pipeline. + We already have a explicit check for OUT_OF_DATE and the same general + error check in the statements following so just use that code. + +2019-08-23 14:19:22 +1000 Matthew Waters + + * gst-libs/gst/vulkan/gstvkswapper.c: + * gst-libs/gst/vulkan/gstvkwindow.c: + vulkan/swapper: destroy the surface in finalize + Fixes a leak of the VkSurface object. + +2019-08-23 14:17:02 +1000 Matthew Waters + + * gst-libs/gst/vulkan/gstvkswapper.c: + vulkan/swapper: set some values to NULL in error conditions + So that they are not double free()-ed. + +2019-08-23 14:14:39 +1000 Matthew Waters + + * ext/vulkan/vkcolorconvert.c: + vulkancolorconvert: explicitly initalize swizzle arrays + Fixes uninitialized access of the indexed values larger than + the number of planes in the video format. + +2019-08-23 14:13:16 +1000 Matthew Waters + + * gst-libs/gst/vulkan/gstvkerror.c: + vulkan/error: add the error value in hex and decimal + Provides more information for what may be an 'Unknown' error. + +2019-08-23 14:11:16 +1000 Matthew Waters + + * gst-libs/gst/vulkan/gstvkswapper.c: + vulkanswapper: disconnect window signals before any internal resources + Otherwise, it's racy whether the necessary resources are available in + the signal callbacks on destruction. + +2019-08-19 12:30:30 +0800 Haihao Xiang + + * sys/msdk/gstmsdkvpp.c: + msdkvpp: don't return GST_FLOW_ERROR for MFX_WRN_INCOMPATIBLE_VIDEO_PARAM + Returning MFX_WRN_INCOMPATIBLE_VIDEO_PARAM means MSDK detects some + incompatible parameters but it is resolved, and we may not regard + MFX_WRN_INCOMPATIBLE_VIDEO_PARAM as a fatal error. In this fix, + GST_FLOW_OK is returned but with a warning message so that a pipeline + may run to the end. + +2019-08-28 16:11:12 +1000 Matthew Waters + + * sys/androidmedia/gstahcsrc.c: + ahcsrc: #define GST_USE_UNSTABLE_API for phtography inteface + Fixes werror build: + In file included from ../sys/androidmedia/gstahcsrc.c:70: + ../gst-libs/gst/interfaces/photography.h:27:2: error: "The GstPhotography interface is unstable API and may change in future." [-Werror,-W#warnings] + #warning "The GstPhotography interface is unstable API and may change in future." + ^ + ../gst-libs/gst/interfaces/photography.h:28:2: error: "You can define GST_USE_UNSTABLE_API to avoid this warning." [-Werror,-W#warnings] + #warning "You can define GST_USE_UNSTABLE_API to avoid this warning." + ^ + +2019-08-27 12:05:10 +1000 Matthew Waters + + * ext/mpeg2enc/meson.build: + mpeg2enc: fix werror build with clang + /usr/include/mjpegtools/mpeg2enc/ontheflyratectlpass1.hh:1:9: error: '_ONTHEFLYRATECTLPASS1_HH' is used as a header guard here, followed by #define of a different macro [-Werror,-Wheader-guard] + #ifndef _ONTHEFLYRATECTLPASS1_HH + ^~~~~~~~~~~~~~~~~~~~~~~~ + /usr/include/mjpegtools/mpeg2enc/ontheflyratectlpass1.hh:2:9: note: '_ONTHELFYRATECTLPASS1_HH' is defined here; did you mean '_ONTHEFLYRATECTLPASS1_HH'? + #define _ONTHELFYRATECTLPASS1_HH + ^~~~~~~~~~~~~~~~~~~~~~~~ + _ONTHEFLYRATECTLPASS1_HH + In file included from ../subprojects/gst-plugins-bad/ext/mpeg2enc/gstmpeg2encoder.cc:31: + /usr/include/mjpegtools/mpeg2enc/ontheflyratectlpass2.hh:1:9: error: '_ONTHEFLYRATECTLPASS2_HH' is used as a header guard here, followed by #define of a different macro [-Werror,-Wheader-guard] + #ifndef _ONTHEFLYRATECTLPASS2_HH + ^~~~~~~~~~~~~~~~~~~~~~~~ + /usr/include/mjpegtools/mpeg2enc/ontheflyratectlpass2.hh:2:9: note: '_ONTHELFYRATECTLPASS2_HH' is defined here; did you mean '_ONTHEFLYRATECTLPASS2_HH'? + #define _ONTHELFYRATECTLPASS2_HH + ^~~~~~~~~~~~~~~~~~~~~~~~ + _ONTHEFLYRATECTLPASS2_HH + /usr/include/mjpegtools/mpeg2enc/encoderparams.hh:82:1: error: struct 'RateCtl' was previously declared as a class; this is valid, but may result in linker errors under the Microsoft C++ ABI [-Werror,-Wmismatched-tags] + struct RateCtl; + ^ + /usr/include/mjpegtools/mpeg2enc/ratectl.hh:50:7: note: previous use is here + class RateCtl + ^ + /usr/include/mjpegtools/mpeg2enc/encoderparams.hh:82:1: note: did you mean class here? + struct RateCtl; + ^~~~~~ + class + +2019-08-26 22:19:13 +1000 Matthew Waters + + * sys/uvch264/gstuvch264deviceprovider.c: + * sys/uvch264/gstuvch264deviceprovider.h: + uvch264: fix werror build with clang + ../subprojects/gst-plugins-bad/sys/uvch264/gstuvch264deviceprovider.c:48:1: warning: unused function 'GST__UVC_H264_DEVICE' [-Wunused-function] + G_DECLARE_FINAL_TYPE (GstUvcH264Device, gst_uvc_h264_device, GST_, + ^ + /usr/include/glib-2.0/gobject/gtype.h:1405:33: note: expanded from macro 'G_DECLARE_FINAL_TYPE' + static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) { \ + ^ + :75:1: note: expanded from here + GST__UVC_H264_DEVICE + ^ + ../subprojects/gst-plugins-bad/sys/uvch264/gstuvch264deviceprovider.c:48:1: warning: unused function 'GST__IS_UVC_H264_DEVICE' [-Wunused-function] + /usr/include/glib-2.0/gobject/gtype.h:1407:26: note: expanded from macro 'G_DECLARE_FINAL_TYPE' + static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) { \ + ^ + :78:1: note: expanded from here + GST__IS_UVC_H264_DEVICE + ^ + ../subprojects/gst-plugins-bad/sys/uvch264/gstuvch264deviceprovider.c:139:1: warning: unused function 'GST_UVC_H264_DEVICE_PROVIDER' [-Wunused-function] + G_DECLARE_FINAL_TYPE (GstUvcH264DeviceProvider, gst_uvc_h264_device_provider, GST, UVC_H264_DEVICE_PROVIDER, GstDeviceProvider) + ^ + /usr/include/glib-2.0/gobject/gtype.h:1405:33: note: expanded from macro 'G_DECLARE_FINAL_TYPE' + static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) { \ + ^ + :137:1: note: expanded from here + GST_UVC_H264_DEVICE_PROVIDER + ^ + ../subprojects/gst-plugins-bad/sys/uvch264/gstuvch264deviceprovider.c:139:1: warning: unused function 'GST_IS_UVC_H264_DEVICE_PROVIDER' [-Wunused-function] + /usr/include/glib-2.0/gobject/gtype.h:1407:26: note: expanded from macro 'G_DECLARE_FINAL_TYPE' + static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) { \ + ^ + :140:1: note: expanded from here + GST_IS_UVC_H264_DEVICE_PROVIDER + ^ + +2019-08-26 22:17:57 +1000 Matthew Waters + + * ext/aom/gstav1enc.c: + av1enc: fix werror build with clang + ../subprojects/gst-plugins-bad/ext/aom/gstav1enc.c:415:34: warning: implicit conversion from enumeration type 'GstAV1EncEndUsageMode' to different enumeration type 'enum aom_rc_mode' [-Wenum-conversion] + av1enc->aom_cfg.rc_end_usage = DEFAULT_END_USAGE; + ~ ^~~~~~~~~~~~~~~~~ + ../subprojects/gst-plugins-bad/ext/aom/gstav1enc.c:162:41: note: expanded from macro 'DEFAULT_END_USAGE' + #define DEFAULT_END_USAGE GST_AV1_ENC_END_USAGE_VBR + ^~~~~~~~~~~~~~~~~~~~~~~~~ + +2019-08-23 18:40:49 -0400 Olivier Crête + + * ext/srt/gstsrtobject.c: + srt: Set latency property on SRT socket + +2019-08-23 17:54:49 -0400 Olivier Crête + + * ext/srt/gstsrtobject.c: + srt: Add sender side statistics + +2019-08-23 16:21:47 -0400 Olivier Crête + + * ext/srt/gstsrtobject.c: + * ext/srt/gstsrtobject.h: + srtobject: Remove pointless GMainLoop + Just use srt's blocking epoll function and fix locking while we're at it. + +2019-08-13 22:54:42 +0530 Nirbheek Chauhan + + * sys/wasapi/gstwasapidevice.c: + * sys/wasapi/gstwasapisink.c: + * sys/wasapi/gstwasapisrc.c: + wasapi: Move to CoInitializeEx for COM initialization + CoInitialize is not allowed when targeting UWP and causes a Windows + Application Certification Kit (WACK) error. + +2019-08-23 17:55:00 -0400 Olivier Crête + + * gst/mpegtsdemux/tsdemux.c: + * gst/mpegtsdemux/tsdemux.h: + tsdemux: Make latency configurable + Allows for "low latency" mpeg-ts mode which is not standard, but somewhat common. + For this to work the sender has to put timestamps at a higher frequency than the spec requires. + +2019-08-26 14:36:35 +0530 Guillaume Desmottes + + * gst/videoparsers/gsth265parse.c: + h265parse: fix colorimetry in src caps if sink caps has no structure + We do want to include the colorimetry in the src caps if the sink caps + doesn't have any structure associated. + +2019-08-26 14:36:35 +0530 Guillaume Desmottes + + * gst/videoparsers/gsth264parse.c: + h264parse: fix colorimetry in src caps if sink caps has no structure + We do want to include the colorimetry in the src caps if the sink caps + doesn't have any structure associated. + +2019-08-26 14:53:39 -0400 Xavier Claessens + + * sys/androidmedia/gstamc.c: + amc: Do not skip decoders that have no profile levels + +2019-05-08 11:06:40 -0400 Aaron Boxer + + * gst-libs/gst/codecparsers/gsth265parser.c: + * gst-libs/gst/codecparsers/gsth265parser.h: + * gst/videoparsers/gsth265parse.c: + * gst/videoparsers/gsth265parse.h: + h265parse: add support for SEI registered user data + +2019-05-08 11:05:40 -0400 Aaron Boxer + + * gst/videoparsers/gsth264parse.c: + * gst/videoparsers/gsth264parse.h: + h264parse: use gstvideoparseutils to handle user data + +2019-05-08 11:04:49 -0400 Aaron Boxer + + * gst/videoparsers/gstmpegvideoparse.c: + * gst/videoparsers/gstmpegvideoparse.h: + mpegvideoparse: use gstvideoparseutils to handle user data + +2019-05-08 11:02:35 -0400 Aaron Boxer + + * gst/videoparsers/Makefile.am: + * gst/videoparsers/gstvideoparseutils.c: + * gst/videoparsers/gstvideoparseutils.h: + * gst/videoparsers/meson.build: + videoparseutils: add new parser class + +2019-08-23 09:51:20 +0800 Haihao Xiang + + * sys/msdk/gstmsdkvpp.c: + * sys/msdk/gstmsdkvpp.h: + * sys/msdk/msdk-enums.c: + * sys/msdk/msdk.c: + * sys/msdk/msdk.h: + msdkvpp: support video-direction property + video-direction property is common property in gstreamer. In addition, + both mirroring & rotation properties are marked as deprecated, + video-direction will override mirroring & rotation properties when they + are set explicitly + Fix https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1058 + +2019-08-21 16:44:39 +0800 Yan Wang + + * sys/msdk/gstmsdkdec.c: + msdkdec: Fix buffer allocation based on frame. + gst_msdkdec_finish_task() may release all frames in + GstVideoDecoder object. In this case, allocate_output_buffer() + cannot get the oldest frame to allocate buffer. + So gst_msdkdec_handle_frame() should return GST_FLOW_OK for + letting gst_video_decoder_decode_frame() to send a new frame + for decoding. + Fixes #664. + Fixes #665. + +2019-08-08 11:54:45 +0900 Shinya Saito + + * ext/wayland/gstwaylandsink.c: + waylandsink: Fix return type of prototype of show_frame() + +2019-08-24 12:18:20 +0900 Yeongjin Jeong + + * sys/msdk/gstmsdkallocator_libva.c: + msdk: Don't use VA_RT_FORMAT_YUV420_10 if it's undefined + ../sys/msdk/gstmsdkallocator_libva.c:99:16: error: ‘VA_RT_FORMAT_YUV420_10’ + The minimum required version seems to VA_API_VERSION >= 1.2.0 + +2019-08-23 19:56:35 +0200 Mathieu Duponchelle + + * ext/chromaprint/gstchromaprint.c: + * ext/directfb/dfbvideosink.c: + * ext/fluidsynth/gstfluiddec.c: + * ext/kate/gstkatedec.c: + * ext/kate/gstkateenc.c: + * ext/kate/gstkatetiger.c: + * ext/ladspa/gstladspa.c: + * ext/lv2/gstlv2.c: + * ext/modplug/gstmodplug.cc: + * ext/mpeg2enc/gstmpeg2enc.cc: + * ext/mplex/gstmplex.cc: + * ext/openmpt/gstopenmptdec.c: + * ext/srt/gstsrtsink.c: + * ext/srt/gstsrtsrc.c: + * ext/voaacenc/gstvoaacenc.c: + * ext/voamrwbenc/gstvoamrwbenc.c: + * ext/wayland/gstwaylandsink.c: + * ext/webrtc/webrtcdatachannel.c: + * ext/wildmidi/gstwildmididec.c: + * gst-libs/gst/webrtc/dtlstransport.c: + * gst-libs/gst/webrtc/icetransport.c: + * gst-libs/gst/webrtc/rtcsessiondescription.c: + * gst-libs/gst/webrtc/rtcsessiondescription.h: + * gst-libs/gst/webrtc/rtpreceiver.c: + * gst-libs/gst/webrtc/rtpsender.c: + * gst-libs/gst/webrtc/rtptransceiver.c: + * gst-libs/gst/webrtc/webrtc_fwd.h: + * gst/accurip/gstaccurip.c: + * gst/festival/gstfestival.c: + * gst/pcapparse/gstpcapparse.c: + docstrings: port ulinks to markdown links + +2019-08-20 12:44:44 +0200 gla + + * sys/dshowsrcwrapper/gstdshow.cpp: + dshowsrcwrapper: fix regression on device selection + Do not take device_name if a device has been specified. Do not take device_index into account if a device or a device name has been specified. + +2019-08-23 17:08:20 +1000 Matthew Waters + + * docs/meson.build: + meson: Don't generate doc cache when no plugins are enabled + Fixes gst-build with -Dauto-features=disabled -Dbad=enabled + +2019-08-21 10:46:43 -0700 U. Artie Eoff + + * sys/msdk/gstmsdkvpputil.c: + msdk: vpp: rotate output frame + When vpp rotation is 90 or 270, the output frame + should be rotated, too. + Example: + gst-launch-1.0 -vf videotestsrc \ + ! video/x-raw,width=720,height=480 \ + ! msdkvpp rotation=90 ! vaapisink + +2019-08-22 17:23:39 +1000 Matthew Waters + + * gst-libs/gst/vulkan/gstvkdisplay.c: + vulkandisplay: Also free the GSource + NULL checking the main_context does not help as we've just destroyed the + GMainContext and set that field to NULL, not to mention it's unnecessary. + Fixes a leak of display's GSource. + +2019-08-22 17:02:07 +1000 Matthew Waters + + * gst-libs/gst/vulkan/gstvkdisplay.c: + vulkandisplay: free the list of windows on destruction + They may not have had an explicit removal from the subclass. + +2019-08-22 14:57:02 +1000 Matthew Waters + + * ext/vulkan/vkfullscreenrender.c: + vulkan/fullscreenrender: free the attachment descriptions + Fixes a memory leak of the attachment descriptions we receive from the + subclass. + +2019-08-22 14:55:40 +1000 Matthew Waters + + * gst-libs/gst/vulkan/gstvkdisplay.c: + vulkandisplay: fix use-after-free with removal of window + g_list_delete_link() free()'s the list node so any access after that is + a use-after-free. + +2019-08-22 14:54:30 +1000 Matthew Waters + + * gst-libs/gst/vulkan/xcb/xcb_event_source.c: + vulkan/xcb: display->windows is a list of allocated GWeakRef + Don't access them as plain GstVulkanWindow objects. + +2019-08-22 11:48:11 +1000 Matthew Waters + + * ext/vulkan/vkviewconvert.c: + vulkanviewconvert: perform a renegotiation on multiview mode/flag property changes + Otherwise changing the output* properties have no effect until someone else + performs a renegotiation. + +2019-08-22 11:47:29 +1000 Matthew Waters + + * ext/vulkan/shaders/view_convert.frag: + shaders/view-convert: remove some debugging colours + Fixes left and right output modes. + +2019-06-28 15:04:29 +1000 Jan Schmidt + + * gst/mpegtsdemux/tsdemux.c: + tsdemux: Limit the maximum PES payload size + PES packets with size 0 are unbounded, and + could therefore overflow the 32-bit size + accumulator. + Add a 32MB limit, which is larger than + any PES packet should ever get. If one does, + then output a 32MB chunk and continue. + +2019-08-21 23:47:45 +0900 Seungha Yang + + * ext/hls/gsthlsdemux.c: + hlsdemux: Post error message if hlsdemux could not start decryption + _decrypt_start() failure will lead to decryption failure eventually + but catching it earlier if possible. The decrpytion start failure means + that the hls plugin was built without crypto library or crypto library + does not want to accept given key and IV. + +2019-04-09 20:07:05 +0900 Seungha Yang + + * configure.ac: + * ext/hls/gsthlsdemux.c: + * ext/hls/gsthlsdemux.h: + * ext/hls/meson.build: + hls: Make crypto dependency optional when hls-crypto is auto + crypto libraries are not required for hlssink and hlssink2. + Also, hlsdemux with nonencrypted stream can work without crpyto. + Make an error only when users set "hls-crpyto" with non-auto option explicitly, + but no crpyto library was found. + +2019-08-17 13:58:33 +0900 Seungha Yang + + * sys/nvcodec/gstnvdec.c: + nvdec: Always response QUERY_CONTEXT even if openGL is unavailable on the system + nvdec can response for the CUDA context type query regardless of openGL + availability. + +2019-08-14 11:24:19 +0100 Thomas Coldrick + + * ext/wayland/meson.build: + ext/wayland: Define libdrm_dep in meson.build + +2019-08-16 11:07:44 -0400 Xavier Claessens + + * sys/androidmedia/jni/gstamcsurfacetexture-jni.c: + amc: Print error when failing to register listener + +2019-08-16 11:01:05 -0400 Xavier Claessens + + * sys/androidmedia/jni/gstamcsurface.c: + amc: Do not use g_log() for criticals + +2019-05-15 10:16:33 -0400 Xavier Claessens + + * sys/androidmedia/gstamcvideodec.c: + amc: crop values are not mandatory in format + Android documentation has example code how to compute width and height + when crop values are present. + https://developer.android.com/reference/android/media/MediaCodec#accessing-raw-video-bytebuffers-on-older-devices + +2019-04-26 11:03:26 -0400 Xavier Claessens + + * sys/androidmedia/gstamcsurfacetexture.c: + * sys/androidmedia/gstamcsurfacetexture.h: + * sys/androidmedia/jni/gstamcsurfacetexture-jni.c: + amc: Remove unused gst_amc_surface_texture_set_default_buffer_size() + +2019-04-25 14:50:43 -0400 Xavier Claessens + + * sys/androidmedia/gstamcsurfacetexture.c: + * sys/androidmedia/gstamcsurfacetexture.h: + * sys/androidmedia/jni/gstamcsurfacetexture-jni.c: + amc: Fix matrix constness in _get_transform_matrix() + +2019-03-26 11:24:58 -0400 Xavier Claessens + + * sys/androidmedia/gstamc-codec.h: + * sys/androidmedia/gstamcaudiodec.c: + * sys/androidmedia/gstamcvideodec.c: + * sys/androidmedia/gstamcvideoenc.c: + * sys/androidmedia/jni/gstamc-codec-jni.c: + amc: Select between encoder/decoder at GstAmcCodec construct time + Magical 0/1 values where passed to gst_amc_codec_configure() flags + argument. It's more natural to have a boolean is gst_amc_codec_new(). + +2018-11-13 13:16:34 -0500 Xavier Claessens + + * sys/androidmedia/gstamc-format.h: + * sys/androidmedia/gstamcaudiodec.c: + * sys/androidmedia/jni/gstamc-format-jni.c: + amc: Remove gst_amc_format_contains_key() + It is not needed, we can just try to get the key and ignore error. + NdkMediaFormat doesn't have that method. + +2018-11-12 14:02:37 -0500 Xavier Claessens + + * sys/androidmedia/gst-android-hardware-camera.c: + * sys/androidmedia/gst-android-hardware-camera.h: + * sys/androidmedia/gstahcsrc.c: + * sys/androidmedia/gstahcsrc.h: + * sys/androidmedia/gstamc-codec.h: + * sys/androidmedia/gstamc.c: + * sys/androidmedia/gstamcsurfacetexture.c: + * sys/androidmedia/gstamcsurfacetexture.h: + * sys/androidmedia/gstamcvideodec.c: + * sys/androidmedia/gstamcvideodec.h: + * sys/androidmedia/gstjniutils.h: + * sys/androidmedia/jni/gstamc-codec-jni.c: + * sys/androidmedia/jni/gstamcsurface.c: + * sys/androidmedia/jni/gstamcsurface.h: + * sys/androidmedia/jni/gstamcsurfacetexture-jni.c: + * sys/androidmedia/jni/gstamcsurfacetexture-jni.h: + * sys/androidmedia/meson.build: + amc: Turn GstAmcSurfaceTexture into a base class with JNI implementation + +2018-11-11 08:51:04 -0500 Xavier Claessens + + * sys/androidmedia/gstamc-codeclist.h: + * sys/androidmedia/gstamc.c: + * sys/androidmedia/gstamc.h: + * sys/androidmedia/jni/gstamc-codeclist-jni.c: + * sys/androidmedia/meson.build: + amc: Create JNI wrapper for MediaCodecList + There is no NdkMediaCodecList API yet, but it is still better to isolate + JNI code. This will facilitate porting to a native API if Google ever + release one. + +2018-11-10 16:51:02 -0500 Xavier Claessens + + * sys/androidmedia/gstamc-codec.h: + * sys/androidmedia/gstamc-format.h: + * sys/androidmedia/gstamc.c: + * sys/androidmedia/gstamc.h: + * sys/androidmedia/gstjniutils.c: + * sys/androidmedia/gstjniutils.h: + * sys/androidmedia/jni/gstamc-codec-jni.c: + * sys/androidmedia/jni/gstamc-format-jni.c: + * sys/androidmedia/jni/gstamc-internal-jni.h: + * sys/androidmedia/meson.build: + amc: Move MediaCodec JNI wrapper into its own module + This will facilitate adding another implementation based on + NdkMediaCodec instead of JNI. + +2019-08-20 14:21:17 +0530 Nirbheek Chauhan + + * ext/sctp/sctpassociation.c: + sctp: Fix crash on free() when using the MSVC binaries + On Windows, if libusrsctp and gstreamer are built with different + C runtimes (CRT), we cannot free memory allocated inside libusrsctp + with the `free()` function from gstreamer's CRT. + `usrsctp_freedumpbuffer()` simply calls `free()`, but because of the + way DLLs work on Windows, it will always call the free function from + the correct CRT. + +2019-08-14 22:08:34 +1000 Matthew Waters + + * gst/videoparsers/gsth264parse.c: + h264parse: don't critical on VUI parameters > 2^31 + A guint32 greater than 2^31 would be interpreted as negative by + gst_util_uint64_scale_int() and critical. Use the 64-bit integer version + of the function instead. + +2019-08-13 10:07:38 +0900 Seungha Yang + + * sys/nvcodec/gstnvdec.c: + nvdec: Fix possible null object unref + gst_query_get_n_allocation_pools > 0 does not guarantee that + the N th internal array has GstBufferPool object. So users should + check the returned GstBufferPool object from + gst_query_parse_nth_allocation_pool. + +2019-08-19 13:22:20 +0900 Seungha Yang + + * sys/nvcodec/gstnvbaseenc.c: + * sys/nvcodec/gstnvdec.c: + nvcodec: Use default flag for CUDA stream creation + Since nvdec/nvenc engine is running on default stream, + non-default CUDA stream should be synchronized with default + stream eventually. + +2019-08-15 10:58:01 +0800 Wangfei + + * gst-libs/gst/codecparsers/nalutils.c: + * gst-libs/gst/codecparsers/nalutils.h: + h26[45]parser: Fix emulation prevention byte detection + Add a separate epb_cache variable to the codecparser NalReader to + detect Emulation Prevention Bytes separately from the main bit cache. + This fixes problems where the existing logic can mistakenly detect + multiple EPB with a sequence like: 0x00 0x00 0x03 0x00 0x03. In that + case, the 5th byte should not be regarded as an EPB. + +2019-08-18 22:51:18 +0900 Seungha Yang + + * sys/nvcodec/gstnvbaseenc.c: + * sys/nvcodec/gstnvbaseenc.h: + nvenc: Use non default CUDA stream and async operation + Use CUDA async operation if possible with non default CUDA stream + +2019-08-18 22:07:38 +0900 Seungha Yang + + * sys/nvcodec/gstcudaloader.c: + * sys/nvcodec/gstcudaloader.h: + * sys/nvcodec/gstnvdec.c: + * sys/nvcodec/gstnvdec.h: + * sys/nvcodec/stub/cuda.h: + nvdec: Don't use default CUDA stream + Async CUDA operation with default stream (NULL CUstream) is not much + beneficial than blocking operation since all CUDA operations which belong + to the CUDA context will be synchronized with the default stream's operation. + Note that CUDA stream will share all resources of the corresponding CUDA context + but which can help parallel operation similar to the relation between thread and process + +2019-08-18 22:14:37 +0900 Seungha Yang + + * sys/nvcodec/gstnvdec.c: + nvdec: Push/Pop CUDA context around library API call + +2019-08-18 15:45:37 +0900 Seungha Yang + + * sys/nvcodec/gstnvdec.c: + nvdec: Fix timestamp mismatch on draining frames + The internal decoding state must be GST_NVDEC_STATE_PARSE before + calling CuvidParseVideoData(). Otherwise, nvdec will be confused + on decode callback as if the frame is decoding only frame and + the input timestamp of corresponding frame will be ignored. + Eventually one decoded frame will have non-increased PTS. + +2019-08-08 16:54:32 -0400 Aaron Boxer + + * gst/mpegtsdemux/tsdemux.c: + tsdemux: do not error if buffer size is invalid due to DISCONT + Don't signal a pipeline error when processing incomplete + j2pk PES packets that are too small. That can happen normally + during a DISCONT and shouldn't shut down the whole pipeline + +2019-08-16 15:22:26 +0200 Mathieu Duponchelle + + * ext/iqa/iqa.c: + iqa: fix leak of map_meta.data + +2019-08-16 19:32:39 +0900 Seungha Yang + + * sys/nvcodec/gstnvdec.c: + nvdec: Do not access nvdec object from destroy function of qdata + The destroy callback can be called just before the fìnalization of + GstMiniObject. So the nvdec object might be destroyed already. + Instead, store the GstCudaContext with increased ref to safely + unregister the CUDA resource. + +2019-08-15 17:49:12 +0900 Seungha Yang + + * sys/d3dvideosink/d3dhelpers.c: + d3dvideosink: Fix crash on WinProc handler + ... caused by null pointer dereference. The d3dvideosink object might + not available yet on the handler. + +2019-08-15 16:31:01 +0900 Seungha Yang + + * sys/d3d11/meson.build: + meson: d3d11: Remove unnecessary dependency + d3d11 never use any API of gstreamer-allocators-1.0 + +2019-08-15 16:20:26 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.c: + * sys/d3d11/gstd3d11videosink.h: + * sys/d3d11/gstd3d11window.c: + * sys/d3d11/gstd3d11window.h: + d3d11videosink: Take into account pixel aspect ratio + Fix unexpected cropping with non 1:1 pixel aspect-ratio. + The actual buffer width/height should be passed to gst_d3d11_window_render(), + instead of the calculated resolution. The width/height + values are parameters for copying d3d11 video memory. + Also, aspect-ratio should be considered on resize callback + to decide render rectangle size. + +2019-08-14 10:13:52 +0300 Sebastian Dröge + + * ext/closedcaption/gstcccombiner.c: + * ext/closedcaption/gstcccombiner.h: + cccombiner: Make use of new GstAggregator::negotiate() + Simplifies the caps handling code considerably here and removes some + spurious negotiation. + +2019-08-14 11:21:30 -0400 Xavier Claessens + + * sys/androidmedia/gstamcvideodec.c: + amc: Fix crash when a sync_meta survives its sink + _amc_gl_free() could be called after the GstAmcVideoDec has been + finalized, in the case downstream still has a ref to a buffer. + +2019-08-09 02:41:51 -0400 Doug Nazar + + * ext/soundtouch/gstpitch.cc: + pitch: Fix race between putSamples() and setting soundtouch parameters + The various soundtouch set*() functions may cause buffer (re)allocations + which interferes with inputting the audio data. + +2019-08-09 14:49:24 +1000 Matthew Waters + + * gst-libs/gst/vulkan/gstvkswapper.c: + * gst-libs/gst/vulkan/gstvkwindow.c: + * gst-libs/gst/vulkan/gstvkwindow.h: + * gst-libs/gst/vulkan/ios/gstvkios_utils.h: + * gst-libs/gst/vulkan/ios/gstvkwindow_ios.m: + vulkan/ios: keep track of surface changes + +2019-08-06 12:38:41 +1000 Matthew Waters + + * gst-libs/gst/vulkan/ios/gstvkwindow_ios.m: + vulkan/ios: initialize the frame to the parent's + +2019-08-13 23:24:41 +0200 Mathieu Duponchelle + + * gst/mpegtsmux/gstatscmux.c: + atscmux: fix AC-3 stream id + According to ATSC A/52, Annex A, section 4.2: + The value of stream_id in the PES header shall be 0xBD + (indicating private_stream_1) + +2019-08-13 17:50:33 +0300 OleksandrKvl + + * gst/pcapparse/gstpcapparse.c: + * gst/pcapparse/gstpcapparse.h: + pcapparse: fix DISCONT flag setting + DISCONT flag should be set only for first packet. + Fixes #1047. + +2019-08-13 12:10:54 +0200 David Gunzinger + + * ext/webrtc/gstwebrtcbin.c: + webrtc: fix type of max-retransmits, make it work + +2019-08-12 20:26:51 +0300 Sebastian Dröge + + * gst/mxf/mxfvc3.c: + mxfdemux: Also allow picture essence element type 0x05 for VC-3 + It's found like this in various files out there even if it does not + conform to SMPTE 2019-4. + +2019-08-06 17:42:15 +0200 Ignacio Casal Quinteiro + + * sys/wasapi/gstwasapiutil.c: + * sys/wasapi/gstwasapiutil.h: + wasapi: fix symbol redefinition build error + +2019-07-31 11:49:55 -0400 Olivier Crête + + * gst/rist/gstristsink.c: + * gst/rist/gstristsrc.c: + rist: Fix documentation + +2019-07-30 12:54:04 -0400 Olivier Crête + + * gst/rist/gstristsink.c: + * gst/rist/gstristsrc.c: + rist: Document stats-internal unit + +2019-07-26 16:17:59 -0400 Olivier Crête + + * gst/rist/gstristsink.c: + ristsink: Only accept RTCP APP packets with subtype==0 + +2019-07-09 16:50:43 -0400 Olivier Crête + + * gst/rist/gstristsink.c: + * gst/rist/gstristsrc.c: + rist: Fix typo in the documentation + +2019-07-09 16:50:14 -0400 Olivier Crête + + * gst/rist/gstristsink.c: + * gst/rist/gstristsrc.c: + rist: Use the right parameters the signal + +2019-08-09 12:52:31 +0900 Seungha Yang + + * ext/x265/gstx265enc.c: + * ext/x265/gstx265enc.h: + x265enc: Enhance profile setting with fixing infinite loop condition + Don't fixate profile caps which will choose the first profile from list. + Instead, store all profiles allowed by peer and try them until x265 can + accept one of them. + +2019-08-09 12:03:34 +0900 Seungha Yang + + * ext/x265/gstx265enc.c: + x265enc: Fix deadlock on profile setting failure + Don't miss unlock before returning + +2019-08-09 11:39:43 +0900 Seungha Yang + + * sys/nvcodec/gstnvbaseenc.c: + nvenc: Add support YV12 format + YV12 format is supported by Nvidia NVENC without manual conversion. + So nvenc is exposing YV12 format at sinkpad template but there is some + missing point around uploading the memory to GPU. + +2019-08-08 18:47:05 +0000 Marc Leeman + + * gst/rtp/gstrtpsrc.c: + rtp: do not overrule RtpInfo when non dynamic type + When looking up the Rtp information, do not overwrite information + already found with encoding-name by static information. + +2019-08-08 20:06:41 +0900 Seungha Yang + + * sys/nvcodec/gstnvh265enc.c: + * sys/nvcodec/gstnvh265enc.h: + nvh265enc: Enable HDR related SEI nal insertion + If upstream provides the HDR related information, create SEI message + nals and pass them to NVENC. + +2019-08-08 20:01:41 +0900 Seungha Yang + + * gst/videoparsers/gsth265parse.c: + h265parse: Fix mastering display info parsing + Fix mismatched Red Y coordinate value. + +2019-08-08 04:54:38 +0800 Fuwei Tang + + * sys/msdk/gstmsdkdec.c: + msdkdec: fix decoding issue for interlaced streams + Currently h264parser produces a field or a frame for + alignment=au for interlaced streams, but the flag + MFX_BITSTREAM_COMPLETE_FRAME needs a complete frame + or complementary field pair of data, this results in + broken images being output. + Some patches have been sent out to fix h264parser, + but they are pending on some unfinished work. In + order to make gstreamer-msdk decoding work properly + for interlaced streams before h264parser is fixed, + this flag will be removed temporarily and will be + added back once h264parser if fixed. + Related to: + https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/merge_requests/399 + https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/merge_requests/228 + +2019-08-06 21:54:49 +0900 Seungha Yang + + * sys/nvcodec/gstnvbaseenc.c: + * sys/nvcodec/gstnvenc.c: + * sys/nvcodec/gstnvh265enc.c: + nvh265enc: Add support YUV 444 10bits encoding + Note that h264 encoder does not support the YUV 444 10bits format + +2019-08-06 21:55:36 +0900 Seungha Yang + + * sys/nvcodec/gstnvenc.c: + nvenc: Remove unnecessary constraint from YUV420 10bits capability decision + YUV444 capability shouldn't be applied to YUV420 10 bits format + +2019-08-07 12:58:40 +0300 Sebastian Dröge + + * sys/decklink/gstdecklinkvideosrc.cpp: + * sys/decklink/gstdecklinkvideosrc.h: + decklinkvideosrc: Retrieve mode of the ancillary data from the frame + Instead of using the information we stored ourselves for the video frame + itself. Which was also the wrong one: it was the mode from the property, + not the autodetected one. + This fixes vanc extraction with mode=auto + +2019-08-07 12:58:03 +0300 Sebastian Dröge + + * sys/decklink/gstdecklinkvideosrc.cpp: + decklinkvideosrc: Also set the INTERLACED buffer flag on non-TFF buffers + +2019-07-22 12:52:53 -0400 Aaron Boxer + + * sys/msdk/gstmsdkdec.c: + * sys/msdk/gstmsdkdec.h: + msdkdec: no need to cache output state info + +2019-08-07 11:49:43 +0900 Seungha Yang + + * sys/nvcodec/gstnvbaseenc.c: + nvenc: Fix broken RGB format support + Add missing format check introduced by the commit 7de4dbdeb27561c00be94f8666b39dc661c59f7b + +2019-01-29 21:57:44 +0100 Mathieu Duponchelle + + * gst/mpegtsdemux/tsdemux.c: + tsdemux: always take the seek segment stop into account + Even if an accurate seek was not requested, we should still + respect the seek stop. + +2018-09-20 01:05:52 +1000 Jan Schmidt + + * gst/mpegtsdemux/tsdemux.c: + tsdemux: Use gst_segment_do_seek() + Remove some custom and incomplete seek calculation + logic in favour of gst_segment_do_seek(), and + short-circuit any actual seeking or recalculation + if the position didn't change and just send an updated + segment directly. + This removes the custom seeking logic in favour of + using standard core seek handling. + +2018-09-20 01:07:34 +1000 Jan Schmidt + + * gst/mpegtsdemux/tsdemux.c: + mpegtsdemux: Keep the position increasing. + Don't keep the segment position jumping back and forth + based on stream DTS/PTS, only increase the position + if the new value is larger than the old. + +2018-08-31 22:43:46 +1000 Jan Schmidt + + * gst/mpegtsdemux/mpegtsbase.c: + * gst/mpegtsdemux/mpegtsbase.h: + * gst/mpegtsdemux/mpegtsparse.c: + * gst/mpegtsdemux/tsdemux.c: + * gst/mpegtsdemux/tsdemux.h: + mpegts: Re-work segment tracking + Add an output segment into the base class for sub-classes + to use for their output segment, in a place where the base + class can see it. + +2019-08-06 13:50:28 +0900 Seungha Yang + + * sys/nvcodec/gstnvbaseenc.c: + * sys/nvcodec/gstnvdec.c: + nvcodec: Wrap CUDA API return check with gst_cuda_result + The gst_cuda_result macro function is more helpful for debugging + than previous cuda_OK because gst_cuda_result prints the function + and line number. If the CUDA API return was not CUDA_SUCCESS, + gst_cuda_result will print WARNING level debug message with + error name, error text strings. + +2019-08-06 13:44:20 +0900 Seungha Yang + + * sys/nvcodec/gstnvdec.c: + * sys/nvcodec/gstnvdec.h: + nvdec: Port to GstCUDAContext + ... and drop CUvideoctxlock usage. The CUvideoctxlock basically + has the identical role of cuda context push/pop but nvdec specific + way. Since we can share the CUDA context among encoders and decoders, + use CUDA context directly for accessing GPU API. + +2019-07-25 19:33:54 +0900 Seungha Yang + + * sys/nvcodec/gstnvbaseenc.c: + * sys/nvcodec/gstnvbaseenc.h: + * sys/nvcodec/gstnvenc.c: + * sys/nvcodec/gstnvenc.h: + nvenc: Port to GstCudaContext + ... and add support CUDA context sharing similar to glcontext sharing. + Multiple CUDA context per GPU is not the best practice. The context + sharing method is very similar to that of glcontext. The difference + is that there can be multiple context object on a pipeline since + the CUDA context is created per GPU id. For example, a pipeline + has nvh264dec (uses GPU #0) and nvh264device0dec (uses GPU #1), + then two CUDA context will propagated to all pipeline. + +2018-11-23 22:01:41 +0900 Seungha Yang + + * sys/nvcodec/Makefile.am: + * sys/nvcodec/gstcudacontext.c: + * sys/nvcodec/gstcudacontext.h: + * sys/nvcodec/gstcudautils.c: + * sys/nvcodec/gstcudautils.h: + * sys/nvcodec/meson.build: + nvcodec: Introduce NVIDA CUDA helpers + New object and helper functions can remove duplicated code + from nvenc/nvdec. Also this is prework for CUDA device context sharing + among nvdec(s)/nvenc(s). + +2019-07-26 03:27:22 +0200 Mathieu Duponchelle + + * gst/onvif/gstrtponvifparse.c: + * gst/onvif/gstrtponviftimestamp.c: + * gst/onvif/gstrtponviftimestamp.h: + rtponviftimestamp: add opt-out "drop-out-of-segment" property + The default behaviour of rtponviftimestamp is to drop buffers + outside the segment. This creates obvious problems for reverse + playback. + The ONVIF specification unfortunately doesn't describe how to handle + that specific use case, but we can expose a property to let the + user disable the dropping behaviour, and forward these buffers with + a G_MAXUINT64 ONVIF timestamp. + Also modify rtponvifparse to handle such timestamps appropriately. + +2019-07-26 03:26:25 +0200 Mathieu Duponchelle + + * gst/onvif/gstrtponvifparse.c: + rtponvifparse: parse E flag and send EOS when needed + +2019-06-21 20:47:37 +0900 Seungha Yang + + * ext/x265/gstx265enc.c: + * ext/x265/gstx265enc.h: + x265enc: Add support more 8/10/12 bits 4:2:0, 4:2:2 and 4:4:4 profiles + ... with multi-library interface support. Depending on bit depth support of + the linked library, run-time api switch can be made via multi-library interface. + See more detail about libx265 multi-library interface + https://x265.readthedocs.io/en/default/api.html#multi-library-interface + +2019-08-06 21:44:35 +0300 Sebastian Dröge + + * sys/decklink/gstdecklinkaudiosrc.cpp: + * sys/decklink/gstdecklinkvideosrc.cpp: + decklinkaudiosrc/decklinkvideosrc: Do nothing in BaseSrc::negotiate() and always set caps in ::create() + We don't support negotiation with downstream but simply set caps based + on the buffers we receive. This prevents renegotiation to other formats, + and negotiation to NTSC in mode=auto in the beginning until the first + buffer is received. + As side-effect of this, also remove various other caps handling code + that was working around the behaviour of the default + BaseSrc::negotiate(). + +2019-08-06 18:55:28 +0300 Sebastian Dröge + + * gst/debugutils/gsterrorignore.c: + errorignore: Try pushing again after a caps event too + It might have reconfigured everything correctly so that pushing buffers + works again afterwards, e.g. if the previous caps event was just + rejected. + +2019-08-06 18:51:54 +0300 Sebastian Dröge + + * gst/timecode/gsttimecodestamper.c: + timecodestamper: Require a non-0/1 framerate on the pad templates + We reject caps with other framerates as it's impossible to generate + timecodes unless we actually know a constant framerate. Reflect this + also in the pad template caps. + +2019-08-06 16:38:08 +0300 Sebastian Dröge + + * gst/timecode/gstavwait.c: + avwait: Improve debug output a bit + +2019-07-29 13:52:04 +0900 Seungha Yang + + * sys/nvcodec/gstnvbaseenc.c: + nvenc: Return profile compatible input formats from GstVideoEncoder::getcaps + Do not accept any input formats which could not be supported + by downstream requested codec profiles. + +2019-07-27 00:52:59 +0900 Seungha Yang + + * sys/nvcodec/gstnvbaseenc.c: + nvenc: Fix caps negotiation failure on unspecified interlace-mode + During GstVideoInfo conversion from GstCaps, interlace-mode is + inferred to progressive so unspecified interlace-mode should not cause any + negotiation issue. Simly set GST_PAD_FLAG_ACCEPT_INTERSECT flag + on sinkpad to fix issue. + +2019-07-27 00:57:02 +0900 Seungha Yang + + * sys/nvcodec/gstnvbaseenc.h: + * sys/nvcodec/gstnvh264enc.c: + * sys/nvcodec/gstnvh264enc.h: + * sys/nvcodec/gstnvh265enc.c: + * sys/nvcodec/gstnvh265enc.h: + nvenc: Remove unused member variables + Supported interlace-mode and codec profiles are checked + during plugin init and those values are never used. + +2019-07-27 00:41:17 +0900 Seungha Yang + + * tests/check/elements/nvenc.c: + tests: nvenc: Add test caps negotiation with interlace-mode field + +2019-08-05 19:45:05 +0300 Sebastian Dröge + + * ext/webrtc/webrtctransceiver.c: + * gst-libs/gst/webrtc/rtptransceiver.c: + * gst-libs/gst/webrtc/rtptransceiver.h: + * tests/check/elements/webrtcbin.c: + * tests/examples/webrtc/webrtcrenego.c: + rtptransceiver: Remove direction setter and vfunc and replace it by a property + It was changed from a function to a property in the latest WebRTC spec. + +2019-07-25 22:55:09 +0800 Haihao Xiang + + * sys/msdk/gstmsdkdec.c: + * sys/msdk/msdk.c: + * sys/msdk/msdk.h: + msdkdec: Update frame info from video parameters + A 10bit stream may have different depth values for Luma and Chroma, and + MSDK requires the frame info must match the corresponding video + parameters + +2019-08-02 16:31:59 +0900 Yeongjin Jeong + + * gst-libs/gst/vulkan/gstvkbuffermemory.c: + * gst-libs/gst/vulkan/gstvkmemory.c: + vulkan: Fix GstMemory leaks + Allocated GstMemory should be freed with g_free() + +2019-08-03 11:31:21 +0800 Fuwei Tang + + * gst/videoparsers/gsth264parse.c: + h264parse: fix issue that caps "interlace-mode" can't be updated correctly + Upstream overrides the info "interlace-mode", otherwise update it with + SPS info. + +2019-07-30 23:49:09 +0900 Seungha Yang + + * sys/nvcodec/gstnvdec.c: + nvdec: Respect upstream provided timestamp + Decoder sometimes reports nonincreasing timestamp. + Use input frame's timestamp like other decoder elements. + +2019-07-30 13:15:32 +0900 Seungha Yang + + * sys/nvcodec/gstnvbaseenc.c: + * sys/nvcodec/gstnvenc.c: + nvenc: Add support RGB 8/10bits formats + BGRA/RGBA/RGB10A2/BGR10A2 formats can be supported by nvenc. + Depending on device, supported format can be different. + Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1038 + +2019-07-31 00:02:59 +0900 Seungha Yang + + * sys/nvcodec/gstnvdec.c: + nvdec: Use upstream framerate if possible + Encoded bitstream might not have valid framerate. If upstream + provided non-variable-framerate (i.e., fps_n > 0 and fps_d > 0) + use upstream framerate instead of parsed one. + +2019-07-30 23:54:48 +0900 Seungha Yang + + * sys/nvcodec/gstnvbaseenc.c: + nvenc: Fix crash with unspecified framerate + Nvidia driver seems to calculating floating point framerate + without validation. This causes crash both on linux and Windows. + Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1012 + +2019-08-03 05:28:33 -0400 Doug Nazar + + * gst/mpegdemux/gstmpegdemux.c: + mpegdemux: Parse mpeg audio layer version and add to caps. + +2019-08-03 05:21:29 -0400 Doug Nazar + + * gst/mpegdemux/gstmpegdemux.c: + mpegdemux: Finish setting up stream before adding pad. + +2019-07-26 07:45:46 -0600 Aaron Boxer + + * sys/msdk/gstmsdkdec.c: + * sys/msdk/gstmsdkdec.h: + msdkdec: no need to cache allocation_caps + +2019-08-05 11:31:48 +1000 Matthew Waters + + * gst-libs/gst/vulkan/meson.build: + vulkan: add a couple of headers to the install list + +2019-07-31 18:03:19 +0000 Marc Leeman + + * gst/videoparsers/gstmpeg4videoparse.c: + * gst/videoparsers/gstmpeg4videoparse.h: + mpeg4videoparse: allow sending config at IDR + Based on h264parse, also allow to send the config at every IDR. + +2019-07-31 12:12:18 +0900 Seungha Yang + + * configure.ac: + * sys/nvcodec/Makefile.am: + configure: Update for nvcodec dependency change + nvcodec is compilable without external dependency + +2019-07-31 12:11:05 +0900 Seungha Yang + + * sys/nvcodec/gstnvdec.c: + nvdec: Fix build warning error + gstnvdec.c:1222:3: error: implicit declaration of function ‘memset’ [-Werror=implicit-function-declaration] + memset (&type_info, 0, sizeof (type_info)); + ^~~~~~ + +2019-07-30 21:18:59 +0200 Mathieu Duponchelle + + * gst/mpegtsmux/gstbasetsmux.c: + * gst/mpegtsmux/gstbasetsmux.h: + * gst/mpegtsmux/tsmux/tsmux.c: + * gst/mpegtsmux/tsmux/tsmux.h: + * gst/mpegtsmux/tsmux/tsmuxcommon.h: + basetsmux: expose pcr-interval property + Instead of using a static hardcoded PCR interval, allow the user + to configure it. + Also revert back the default to a 40 ms interval, that was changed + in recent patches for no good reason. + +2019-07-31 18:02:02 +0900 Yeongjin Jeong + + * tests/check/elements/x265enc.c: + tests: x265enc: Add tiny resolution encoding check + Add the tiny picture encoding test case allowed in x265 + +2019-07-01 18:14:55 +0900 Yeongjin Jeong + + * ext/x265/gstx265enc.c: + * tests/check/elements/x265enc.c: + x265enc: Specify max CU size depending on input resolution + x265 does not allow user to configure a picture size smaller than + at least one CU size, and maxCUSize must be 16, 32, or 64. + Therefore, the CU size must be set according to the input resolution, + and the input resolution can not be less than 16. + +2019-07-23 13:06:55 -0700 Ederson de Souza + + * ext/avtp/gstavtpcvfpay.c: + avtp: CVF - fix error message + The error is about *not* being able to map a buffer. + +2019-07-08 14:19:07 -0700 Ederson de Souza + + * ext/avtp/gstavtpcvfpay.c: + * tests/check/elements/avtpcvfpay.c: + avtp: CVF - Do not infinite loop trying to fragment zero sized NAL unit + Zero sized NAL-units should not happen, but if they do, do not infinite + loop. Added also a unit test for this case. + +2019-07-31 00:38:44 +1000 Jan Schmidt + + * gst-libs/gst/codecparsers/gsth265parser.c: + h265parser: Skip unused SEI bits differently + 3-byte emulation bytes can confuse the current code that skips + bits at the end of an SEI. Use a simpler method that's also + quicker because it skips all remaining bits in one go instead + of 1 bit at a time. + +2019-07-20 22:38:46 +0900 Seungha Yang + + * gst-libs/gst/codecparsers/gsth265parser.h: + * gst/videoparsers/gsth265parse.c: + h265parse: Add support for compatible profiles of extensions + From decoder's capability point of view as defined by the h265 specification, + accept peer profile caps. + +2019-07-30 19:07:42 +0900 Seungha Yang + + * sys/nvcodec/gstnvenc.c: + nvenc: Fix build error with x86 msvc + __stdcall is accepted or ignored by the compiler on x64 but x86 + is not the case. So the function definition should be consistent + with declaration. + Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1039 + +2019-07-30 17:49:25 +0900 Seungha Yang + + * sys/nvcodec/gstnvbaseenc.c: + nvenc: Fix deadlock when pad_push return was not GST_FLOW_OK + Encoding thread is terminated without any notification so + upstream streaming thread is locked because there is nothing + to pop from GAsyncQueue. If downstream returns error, + we need put SHUTDOWN_COOKIE to GAsyncQueue for chain function + can wakeup. + +2019-07-30 11:06:43 +0900 Seungha Yang + + * sys/nvcodec/stub/cuda.h: + nvcodec: Fix broken ABI in cuda stub header to fix nvenc with opengl + Fix the broken ABI introduced by the commit 367e742e5dd53400d212ce07d0ac0745f3535ac3 + From CUDA Toolkit 3.2, size_t has been used in CUDA_MEMCPY2D structure + instead of unsigned int. + +2019-06-12 15:00:38 +0200 Jakub Adam + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/webrtcsdp.c: + webrtcbin: Support data channel SDP offers from Chrome + When negotiating a data channel, Chrome as recent as 75 still uses SDP + based on version 05 of the SCTP SDP draft, for example: + m=application 9 DTLS/SCTP 5000 + a=sctpmap:5000 webrtc-datachannel 1024 + Implement support for parsing SCTP port out of SDP message with sctpmap + attribute. Fixes data channel negotiation with Chrome browser. + +2019-07-28 19:08:24 -0400 Aaron Boxer + + * ext/openjpeg/gstopenjpegdec.c: + * ext/openjpeg/gstopenjpegdec.h: + openjpegdec: enable multi-threaded decode + +2019-07-28 19:07:04 -0400 Aaron Boxer + + * ext/openjpeg/gstopenjpegdec.c: + openjpegdec: check return value when setting up decoder + +2019-07-02 12:27:40 +0100 Charlie Turner + + * ext/hls/gsthlsdemux.c: + * gst-libs/gst/adaptivedemux/gstadaptivedemux.c: + * gst-libs/gst/adaptivedemux/gstadaptivedemux.h: + adaptivedemux: remove some deadlocks using webkitwebsrc. + WebKit's websrc depends on the main-thread for download completion + rendezvous. This exposed a number of deadlocks in adaptivedemux due to + it holding the MANIFEST_LOCK during network requests, and also needing + to hold it to change_state and resolve queries, which frequently occur + during these download windows. + Make demux->running MT-safe so that it can be accessed without using the + MANIFEST_LOCK. In case a source is downloading and requires a MT-thread + notification for completion of the fragment download, a state change + during this download window will deadlock unless we cancel the downloads + and ensure they are not restarted before we finish the state-change. + Also make demux->priv->have_manifest MT-safe. A duration query happening + in the window described above can deadlock for the same reason. Other + src queries (like SEEKING) that happen in this window also could + deadlock, but I haven't hit this scenario. + Increase granularity of API_LOCK'ing in change_state as well. We need to + cancel downloads before trying to take this lock, since sink events + (EOS) will hold it before starting a fragment download. + +2019-07-29 14:56:16 +0700 Ilya Smelykh + + * ext/webrtc/gstwebrtcice.c: + webrtcbin: fix GInetAddress leak + +2019-07-28 14:19:36 -0400 Aaron Boxer + + * configure.ac: + * ext/openjpeg/gstopenjpeg.h: + * ext/openjpeg/gstopenjpegdec.c: + * ext/openjpeg/gstopenjpegenc.c: + * ext/openjpeg/meson.build: + openjpeg: remove support for OpenJPEG 1.5 + Also require OpenJPEG version >= 2.2 + +2019-07-23 22:26:19 +0900 Wonchul Lee + + * ext/aom/gstav1enc.c: + av1enc: enable row-mt property conditionally + The row based multi threading control was introduced after 1.0.0 version + of libaom released. It adds a guard to check the relevant control + definition declared. It fixes #1025 + +2019-07-24 12:44:21 -0600 Aaron Boxer + + * sys/msdk/meson.build: + msdk: enable 32 bit build on windows + +2019-07-26 06:35:53 +0000 Sebastian Dröge + + * ext/dtls/gstdtlsdec.c: + Revert "dtls: fix generated cert dtls agent leak" + This reverts commit e5585b1bde162bc038fd1265438edbcd94ccb5ed + +2019-07-19 22:46:01 +0900 Seungha Yang + + * sys/nvcodec/Makefile.am: + * sys/nvcodec/gstcudaloader.c: + * sys/nvcodec/gstcudaloader.h: + * sys/nvcodec/gstnvdec.c: + * sys/nvcodec/gstnvdec.h: + * sys/nvcodec/meson.build: + * sys/nvcodec/plugin.c: + * sys/nvcodec/stub/cuda.h: + nvdec: Make OpenGL dependency optional + By adding system memory support for nvdec, both en/decoder + in the nvcodec plugin are able to be usable regardless of + OpenGL dependency. Besides, the direct use of system memory + might have less overhead than OpenGL memory depending on use cases. + (e.g., transcoding using S/W encoder) + +2019-07-25 18:27:30 +0300 Sebastian Dröge + + * gst/timecode/gsttimecodestamper.c: + timecodestamper: Validate LTC timestamps before trying to use them + There's no point in working with invalid LTC timestamps as all future + calculations will be wrong based on this, and invalid LTC timestamps can + sometimes be read via the audio input. + +2019-07-25 20:03:02 +0700 Ilya Smelykh + + * ext/dtls/gstdtlsdec.c: + dtls: fix generated cert dtls agent leak + The generated certificate dtls agent was refed two times on the first call. + +2019-07-25 10:00:14 +0000 Ilya Smelykh + + * ext/dtls/gstdtlsconnection.c: + dtls: fix dtls connection object leak + +2019-07-22 19:10:15 +0300 Sebastian Dröge + + * sys/decklink/gstdecklink.cpp: + decklink: Make sure to return a value from all code paths + False warning from MSVC, or it does not understand that + g_assert_not_reached() does not return. + ...\gst-plugins-bad-1.0-1.17.0.1\sys\decklink\gstdecklink.cpp(1647) : warning C4715: 'gst_decklink_configure_duplex_mode': not all control paths return a value + +2019-07-22 17:57:01 +0300 Sebastian Dröge + + * sys/decklink/gstdecklink.cpp: + decklinksrc: Reset timestamp observations on format change + We will usually get timestamps starting from 0 again and due to the + format change the clock of the input might also be different. + +2019-07-25 16:45:21 +0900 Seungha Yang + + * sys/nvcodec/gstnvdec.c: + * sys/nvcodec/gstnvdec.h: + * sys/nvcodec/gstnvenc.c: + * sys/nvcodec/gstnvenc.h: + * sys/nvcodec/plugin.c: + nvcodec: Clean up pointless return values around plugin init + Any plugin which returned FALSE from plugin_init will be blacklisted + so the plugin will be unusable even if an user install required runtime + dependency next time. So that's the reason why nvcodec returns TRUE always. + This commit is to remove possible misreading code. + +2019-07-24 13:06:16 +0900 Seungha Yang + + * sys/nvcodec/gstcudaloader.c: + * sys/nvcodec/gstcuvidloader.c: + * sys/nvcodec/gstnvenc.c: + nvcodec: Change log level for g_module_open failure + Since we build nvcodec plugin without external CUDA dependency, + CUDA and en/decoder library loading failure can be natural behavior. + Emit error only when the module was opend but required symbols are missing. + +2019-07-24 10:00:56 +0900 Seungha Yang + + * sys/nvcodec/gstnvdec.c: + * sys/nvcodec/gstnvdec.h: + nvdec: Add support for 10bits 4:2:0 decoding + This commit includes h265 main-10 profile support if the device can + decode it. + Note that since h264 10bits decoding is not supported by nvidia GPU for now, + the additional code path for h264 high-10 profile is a preparation for + the future Nvidia's enhancement. + +2019-07-24 18:06:41 +0900 Seungha Yang + + * sys/nvcodec/gstnvdec.c: + nvdec: Specify supported profiles of h264/h265 codec + See more details about supported formats at + nvidia codec sdk document "NVDEC_VideoDecoder_API_ProgGuide.pdf" + Table 1. Hardware Video Decoder Capabilities. + Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/926 + +2019-07-24 20:38:58 +0900 Seungha Yang + + * sys/nvcodec/gstnvdec.c: + nvdec: Skip draining before creating internal parser + GstVideoDecoder::drain/flush can be called at very initial state + with stream-start and flush-stop event, respectively. + Draning with NULL CUvideoparser seems to unsafe and that eventually + failed to handle it. + +2019-07-24 14:37:40 -0400 Xavier Claessens + + * ext/dash/meson.build: + dash: Fallback to libxml2 subproject + +2019-07-23 13:47:44 -0400 Aaron Boxer + + * sys/msdk/gstmsdkdec.c: + msdkdec: improve spelling and grammar of comments + +2019-07-23 13:16:36 +0800 Haihao Xiang + + * sys/msdk/gstmsdkbufferpool.c: + * sys/msdk/gstmsdkdec.c: + * sys/msdk/gstmsdkenc.c: + * sys/msdk/gstmsdkvpp.c: + * sys/msdk/msdk.c: + * sys/msdk/msdk.h: + msdkdec: make sure mfx frame width/height meets MSDK's requirement + It is possible that the output region size (e.g. 192x144) is different + from the coded picture size (e.g. 192x256). We may adjust the alignment + parameters so that the padding is respected in GstVideoInfo and use + GstVideoInfo to calculate mfx frame width and height + This fixes the error below when decoding a stream which has different + output region size and coded picture size + 0:00:00.057726900 28634 0x55df6c3220a0 ERROR msdkdec + gstmsdkdec.c:1065:gst_msdkdec_handle_frame: + DecodeFrameAsync failed (failed to allocate memory) + Sample pipeline: + gst-launch-1.0 filesrc location=output.h265 ! h265parse ! msdkh265dec ! + glimagesink + +2019-07-23 13:28:17 +0800 Haihao Xiang + + * sys/msdk/gstmsdkdec.c: + msdkdec: remove unneeded code + Before calling gst_msdkdec_create_buffer_pool, the alignment parameters + have been adjusted. + +2019-07-23 09:40:24 +0900 Seungha Yang + + * sys/nvcodec/meson.build: + * sys/nvcodec/stub/cuda.h: + * tests/check/meson.build: + nvcodec: Drop system installed cuda.h dependency + ... and add our stub cuda header. + Newly introduced stub cuda.h file is defining minimal types in order to + build nvcodec plugin without system installed CUDA toolkit dependency. + This will make cross-compile possible. + +2019-07-23 10:24:10 +0900 Seungha Yang + + * sys/nvcodec/gstnvbaseenc.c: + * sys/nvcodec/gstnvdec.c: + nvcodec: Keep requested rank for default device + Fix for default encoder and decoder element factory to make them have + higher rank than the others. + +2019-07-09 13:31:27 +0900 Seungha Yang + + * sys/nvcodec/gstnvbaseenc.c: + * sys/nvcodec/gstnvbaseenc.h: + * sys/nvcodec/gstnvenc.c: + * sys/nvcodec/gstnvenc.h: + * sys/nvcodec/gstnvh264enc.c: + * sys/nvcodec/gstnvh265enc.c: + nvenc: Register elements per GPU device with capability check + * By this commit, if there are more than one device, + nvenc element factory will be created per + device like nvh264device{device-id}enc and nvh265device{device-id}enc + in addition to nvh264enc and nvh265enc, so that the element factory + can expose the exact capability of the device for the codec. + * Each element factory will have fixed cuda-device-id + which is determined during plugin initialization + depending on the capability of corresponding device. + (e.g., when only the second device can encode h265 among two GPU, + then nvh265enc will choose "1" (zero-based numbering) + as it's target cuda-device-id. As we have element factory + per GPU device, "cuda-device-id" property is changed to read-only. + * nvh265enc gains ability to encoding + 4:4:4 8bits, 4:2:0 10 bits formats and up to 8K resolution + depending on device capability. + Additionally, I420 GLMemory input is supported by nvenc. + +2019-07-21 21:23:30 +0900 Seungha Yang + + * sys/nvcodec/gstnvdec.c: + * sys/nvcodec/gstnvdec.h: + nvdec: Create CUDA context with registered device id + Only the default device has been used by NVDEC so far. + This commit make it possible to use registered device id. + To simplify device id selection, GstNvDecCudaContext usage is removed. + +2019-07-11 21:53:46 +0900 Seungha Yang + + * sys/nvcodec/gstcuvidloader.c: + * sys/nvcodec/gstcuvidloader.h: + * sys/nvcodec/gstnvdec.c: + * sys/nvcodec/gstnvdec.h: + * sys/nvcodec/plugin.c: + nvdec: Register elements per device/codec with capability check + By this commit, each codec has its own element factory so the + nvdec element factory is removed. Also, if there are more than one device, + additional nvdec element factory will be created per + device like nvh264device{device-id}dec, so that the element factory + can expose the exact capability of the device for the codec. + +2019-07-18 18:27:55 +0900 Seungha Yang + + * sys/msdk/gstmsdkdec.c: + * sys/msdk/gstmsdkenc.c: + * sys/msdk/gstmsdkvpp.c: + msdk: Do not expose DMA buffer caps feature on Windows + On Windows, DMA buffer is not supported. PadTemplate with actually + supported feature seems to more make sense. + +2019-07-22 23:01:43 +0900 Seungha Yang + + * sys/nvcodec/gstnvbaseenc.c: + * sys/nvcodec/gstnvdec.h: + * sys/nvcodec/meson.build: + nvcodec: Drop cudaGL.h dependency + nvcodec does not use any type/define/enum in cudaGL.h. + +2019-07-22 12:23:51 +0300 Sebastian Dröge + + * ext/aom/gstav1enc.c: + av1enc: Also set AV1E_SET_ROW_MT from the property value when initializing the encoder + Previously it was only set if the property was changed after the encoder + was initialized. + +2018-12-02 22:49:19 +0900 Wonchul Lee + + * ext/aom/gstav1enc.c: + * ext/aom/gstav1enc.h: + av1enc: Add threads and row-mt properties + Add threads related property that setting a number of threads to encode + av1 codec and row-mt configuration. + +2018-12-02 21:45:50 +0900 Wonchul Lee + + * ext/aom/gstav1enc.c: + av1enc: Release lock when failing to initialize + Add to missing unlock when failing to initialize encoder. + +2019-07-22 11:23:22 +0300 Sebastian Dröge + + * ext/aom/gstav1enc.c: + * ext/aom/gstav1enc.h: + Revert "av1enc: Release lock when failing to initialize" + This reverts commit 7de6b5d48161cb4982efe7fd04c8be408ca85424. + It was accidentally squashed together from the MR instead of keeping the + individual commits. + +2019-07-22 08:00:00 +0000 Fabrice Bellet + + * gst/siren/huffman.c: + siren: fix a global buffer overflow spotted by asan + This patch just enforces boudaries for the access to the + standard_deviation array (64 floats). Such case can be + seen with a corrupted stream, where there's no hope to + obtain a valid decoded frame anyway. + https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1002 + +2019-07-22 06:59:48 +0000 Wonchul Lee + + * ext/aom/gstav1enc.c: + * ext/aom/gstav1enc.h: + av1enc: Release lock when failing to initialize + Add to missing unlock when failing to initialize encoder. + +2019-07-19 01:07:38 +0900 Seungha Yang + + * sys/nvcodec/gstnvdec.c: + * sys/nvcodec/gstnvdec.h: + nvdec: Fix video stuttering issue with VP9 + Address nvidia driver specific behavior to avoid unexpected frame mismatch + between GStreamer and NVDEC. + +2019-07-19 00:52:59 +0900 Seungha Yang + + * sys/nvcodec/gstnvdec.c: + * sys/nvcodec/gstnvdec.h: + nvdec: Drop async queue and handle data on callback of CUvideoparser + Callbacks of CUvideoparser is called on the streaming thread. + So the use of async queue has no benefit. + Make control flow straightforward instead of long while/switch loop. + +2019-07-12 20:24:10 +0200 Mathieu Duponchelle + + * gst/onvif/gstrtponviftimestamp.c: + rtponviftimestamp: fix setting of the discontinuity flag + The D bit is meant to be set whenever there is a discontinuity + in transmission, and directly maps to the DISCONT flag. + The E bit is not meant to be set on every buffer preceding a + discontinuity, but only on the last buffer of a contiguous section + of recording. This has to be signaled through the unfortunately-named + "discont" field of the custom NtpOffset event. + +2019-07-12 20:23:24 +0200 Mathieu Duponchelle + + * gst/onvif/gstrtponvifparse.c: + rtponvifparse: set ONVIF timestamps as buffer PTS + +2019-07-10 23:40:36 +0200 Mathieu Duponchelle + + * gst/videoparsers/gsth264parse.c: + * gst/videoparsers/gsth264parse.h: + * gst/videoparsers/gsth265parse.c: + * gst/videoparsers/gsth265parse.h: + h26{4,5}parse: add support for forward predicted trick mode + Also stop assigning TRUE to fields with |= + +2019-07-17 22:42:10 +0900 Seungha Yang + + * ext/x265/gstx265enc.c: + x265enc: Specify colorimetry related VUI parameters + Set the colorimetry config for the information to be embedded in encodec bitstream. + +2019-07-15 23:40:21 +0900 Seungha Yang + + * sys/nvcodec/gstnvdec.c: + nvdec: Port to color_{primaries,transfer,matrix}_to_iso + ... and update the color information only when upstream was not provided + the information. + +2019-07-17 09:35:35 +0900 Seungha Yang + + * sys/nvcodec/gstnvh264enc.c: + * sys/nvcodec/gstnvh265enc.c: + nvenc: Specify colorimetry related VUI parameters + Set the colorimetry config for the information to be embedded in encodec bitstream. + +2019-07-16 23:30:07 +0200 Mathieu Duponchelle + + * ext/webrtc/webrtcdatachannel.c: + * ext/webrtc/webrtcdatachannel.h: + webrtcdatachannel: inherit directly from GObject + There's no reason for it to inherit from GstObject apart from + locking, which is easily replaced, and inheriting from + GInitiallyUnowned made introspection awkward and needlessly + complicated. + +2019-07-17 00:13:24 +0900 Seungha Yang + + * gst/videoparsers/gsth264parse.c: + h264parse: Update caps per pixel aspect ratio change + Output caps should be updated per pixel aspect ratio change. + +2019-07-16 22:58:26 +0900 Seungha Yang + + * gst/videoparsers/gsth265parse.c: + * gst/videoparsers/gsth265parse.h: + h265parse: Expose parsed colorimetry when VUI provided it + ... and also if upstream did not specify the colorimetry. + +2019-07-16 09:40:01 +0900 Seungha Yang + + * gst/videoparsers/gsth264parse.c: + * gst/videoparsers/gsth264parse.h: + h264parse: Expose parsed colorimetry when VUI provided it + ... and also if upstream did not specify the colorimetry. + +2019-07-17 01:05:32 +0900 Seungha Yang + + * sys/kms/gstkmssink.c: + kmssink: Fix implicit declaration build error + ffs() and strcmp() require string.h + gstkmssink.c:255:28: error: implicit declaration of function ‘ffs’ [-Werror=implicit-function-declaration] + crtc_id = res->crtcs[ffs (crtcs_for_connector) - 1]; + ^~~ + gstkmssink.c:590:10: error: implicit declaration of function ‘strcmp’ [-Werror=implicit-function-declaration] + if (!strcmp (property->name, prop_name)) { + ^~~~~~ + +2019-07-15 16:05:05 +0200 Martin Liska + + * configure.ac: + Fix -Werror=return-type error in configure. + +2019-07-15 15:48:08 -0400 Martin Theriault + + * gst/aiff/aiffparse.c: + aiff: Fix infinite loop in header parsing. + +2019-07-15 12:06:25 +0300 Sebastian Dröge + + * sys/decklink/gstdecklinkvideosrc.cpp: + * sys/decklink/gstdecklinkvideosrc.h: + decklinkvideosrc: Don't report that we have signal until we know for sure + Previously we would've reported that there is signal unless we know for + sure that we don't have signal. For example signal would've been + reported before the device is even opened. + Now keep track whether the signal state is unknown or not and report no + signal if we don't know yet. As before, only send an INFO message about + signal recovery if we actually had a signal loss before. + +2019-07-12 12:53:09 +0300 Sebastian Dröge + + * gst/timecode/gstavwait.c: + avwait: In running-time mode, select start/end running time based on the actual video timestamps + Otherwise we would start/end at exactly the given times, which might be + up to 1 frame earlier/later than the video. + +2019-07-12 12:29:09 +0300 Sebastian Dröge + + * gst/timecode/gstavwait.c: + avwait: Add some more debug output + +2019-07-12 12:28:59 +0300 Sebastian Dröge + + * gst/timecode/gstavwait.c: + avwait: Fix clipping of audio buffers at the start of recording + +2019-07-10 00:34:18 +0800 Ting-Wei Lan + + * docs/meson.build: + build: Fix error messages for missing hotdoc extensions + +2019-07-09 12:43:53 +0300 Sebastian Dröge + + * ext/closedcaption/gstcccombiner.c: + cccombiner: Proxy POSITION/DURATION/URI/CAPS/ALLOCATION queries between video sinkpad and source pad + We pass-through the video as is, only putting a GstMeta on it from the + caption sinkpad. + This fixes negotation problems caused by not passing through caps + queries in both directions. + Also handle CAPS/ACCEPT_CAPS queries directly for the caption pad + instead of proxying. + +2018-12-20 12:37:43 +0900 Seungha Yang + + * sys/nvcodec/gstnvdec.c: + nvdec: Fix possible frame drop on EOS + On eos, baseclass videoencoder call finish() vfunc instead of drain() + +2019-07-08 16:43:10 -0400 Ray Tiley + + * sys/decklink/gstdecklinkvideosrc.cpp: + decklinkvideosrc: remove g_print + Causes a lot of output :) + +2019-07-08 23:58:29 +0900 Seungha Yang + + * ext/vulkan/vkcolorconvert.c: + * ext/vulkan/vkviewconvert.c: + vulkan: Fix incompatible type build warning + Make declare/define a function consistent. + Note that GstBaseTransform::set_caps should return gboolean + Compiling C object subprojects/gst-plugins-bad/ext/vulkan/f3f9d6b@@gstvulkan@sha/vkviewconvert.c.obj. + ../subprojects/gst-plugins-bad/ext/vulkan/vkviewconvert.c(644): + warning C4133: '=': incompatible types - from 'GstFlowReturn (__cdecl *)(GstBaseTransform *,GstCaps *,GstCaps *)' + to 'gboolean (__cdecl *)(GstBaseTransform *,GstCaps *,GstCaps *)' + +2019-07-08 15:51:43 -0400 Olivier Crête + + * ext/srt/gstsrtobject.c: + srt: Remove msg-size property + Remove the now unused property + +2019-07-08 15:50:59 -0400 Olivier Crête + + * ext/srt/gstsrtobject.c: + srtsrc: Receive one frame per gstbuffer + Don't aggregate the received data, just receive it one packet at a + time. So it keeps the packetization boundaries + +2019-07-06 16:15:40 -0400 Nicolas Dufresne + + * ext/srt/gstsrtobject.c: + srt: Fix listener crash if no URI is specified + +2019-07-06 15:53:26 -0400 Nicolas Dufresne + + * ext/srt/gstsrtobject.c: + srt: Use macro instead of duplicating a default value + +2019-07-06 15:45:20 -0400 Nicolas Dufresne + + * ext/srt/gstsrtobject.c: + srt: Fix confusing typo in FIXME comment + SRT does not support IPv6, but the comment said IPv4 which was the + opposite of the following code. + +2019-07-01 13:43:28 +0300 Sebastian Dröge + + * configure.ac: + * gst/timecode/gsttimecodestamper.c: + * gst/timecode/gsttimecodestamper.h: + * gst/timecode/meson.build: + timecodestamper: Add support for linear timecode (LTC) from an audio stream + Based on a patch by + Georg Lippitsch + Vivia Nikolaidou + Using libltc from https://github.com/x42/libltc + +2019-07-01 13:42:16 +0300 Sebastian Dröge + + * gst/timecode/gsttimecodestamper.c: + * gst/timecode/gsttimecodestamper.h: + * gst/timecode/meson.build: + timecodestamper: Rewrite element API and code flow + We now have a single property to select the timecode source that should + be applied, and for each timecode source the timecode is updated at + every frame. Then based on a set mode, the timecode is added to the + frame if none exists already or all existing timecodes are removed and + the timecode is added. + In addition the real-time clock is considered a proper timecode source + now instead of only allowing to initialize once in the beginning with + it, and also instead of just taking the current time we now take the + current time at the clock time of the video frame. + +2019-06-07 13:27:21 +0200 Marc Leeman + + * sys/nvcodec/meson.build: + nvcodec: do a generic cuda tests before going into version specifics + +2019-05-17 22:27:50 +0900 Seungha Yang + + * configure.ac: + * meson_options.txt: + * sys/Makefile.am: + * sys/meson.build: + * sys/nvcodec/Makefile.am: + * sys/nvcodec/cuviddec.h: + * sys/nvcodec/gstcudaloader.c: + * sys/nvcodec/gstcudaloader.h: + * sys/nvcodec/gstcuvidloader.c: + * sys/nvcodec/gstcuvidloader.h: + * sys/nvcodec/gstnvbaseenc.c: + * sys/nvcodec/gstnvbaseenc.h: + * sys/nvcodec/gstnvdec.c: + * sys/nvcodec/gstnvdec.h: + * sys/nvcodec/gstnvenc.c: + * sys/nvcodec/gstnvenc.h: + * sys/nvcodec/gstnvh264enc.c: + * sys/nvcodec/gstnvh264enc.h: + * sys/nvcodec/gstnvh265enc.c: + * sys/nvcodec/gstnvh265enc.h: + * sys/nvcodec/meson.build: + * sys/nvcodec/nvEncodeAPI.h: + * sys/nvcodec/nvcuvid.h: + * sys/nvcodec/plugin.c: + * sys/nvdec/Makefile.am: + * sys/nvdec/meson.build: + * sys/nvenc/Makefile.am: + * sys/nvenc/README: + * sys/nvenc/TODO: + * sys/nvenc/meson.build: + * tests/check/Makefile.am: + * tests/check/meson.build: + nvdec,nvenc: Port to dynamic library loading + ... and put them into new nvcodec plugin. + * nvcodec plugin + Now each nvenc and nvdec element is moved to be a part of nvcodec plugin + for better interoperability. + Additionally, cuda runtime API header dependencies + (i.e., cuda_runtime_api.h and cuda_gl_interop.h) are removed. + Note that cuda runtime APIs have prefix "cuda". Since 1.16 release with + Windows support, only "cuda.h" and "cudaGL.h" dependent symbols have + been used except for some defined types. However, those types could be + replaced with other types which were defined by "cuda.h". + * dynamic library loading + CUDA library will be opened with g_module_open() instead of build-time linking. + On Windows, nvcuda.dll is installed to system path by CUDA Toolkit + installer, and on *nix, user should ensure that libcuda.so.1 can be + loadable (i.e., via LD_LIBRARY_PATH or default dlopen path) + Therefore, NVIDIA_VIDEO_CODEC_SDK_PATH env build time dependency for Windows + is removed. + +2019-01-30 20:07:29 +0900 Seungha Yang + + d3d11videosink: Add new Direct3D11 video render plugin + Direct3D11 was shipped as part of Windows7 and it's obviously + primary graphics API on Windows. + This plugin includes HDR10 rendering if following requirements are satisfied + * IDXGISwapChain4::SetHDRMetaData is available (decleared in dxgi1_5.h) + * Display can support DXGI_COLOR_SPACE_RGB_FULL_G2084_NONE_P2020 color space + * Upstream provides 10 bitdepth format with smpte-st 2084 static metadata + +2019-07-06 00:58:47 +0300 Sebastian Dröge + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/utils.c: + webrtcbin: Don't assert if an SDP media can't be converted to caps + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1008 + +2019-04-25 16:32:34 +0800 Haihao Xiang + + * sys/msdk/Makefile.am: + * sys/msdk/gstmsdk.c: + * sys/msdk/gstmsdkvp9enc.c: + * sys/msdk/gstmsdkvp9enc.h: + * sys/msdk/meson.build: + msdk: add msdkvp9enc element + +2019-04-28 16:10:13 +0800 Haihao Xiang + + * sys/msdk/gstmsdkallocator_libva.c: + msdk: workaround for MFX_FOURCC_VP9_SEGMAP surface + MFX_FOURCC_VP9_SEGMAP surface in MSDK is an internal surface however + MSDK still call the external allocator for this surface, so this plugin + has to return UNSUPPORTED and force MSDK allocates surface using the + internal allocator. + See https://github.com/Intel-Media-SDK/MediaSDK/issues/762 for details + +2019-05-08 16:05:07 +0800 Haihao Xiang + + * sys/msdk/gstmsdkenc.c: + * sys/msdk/gstmsdkenc.h: + msdkenc: allow encode element requires extra frames + The call of MFXVideoENCODE_EncodeFrameAsync may not generate output and + the function returns MFX_ERR_MORE_DATA with NULL sync point, the input + frame is cached in this case, so it is possible that all allocated + frames go into the surfaces_used list after calling + MFXVideoENCODE_EncodeFrameAsync a few times, then the encoder will fail + to get an available surface before releasing used frames + This patch adds a new field of num_extra_frames to GstMsdkEnc and allows + encode element requires extra frames, the default value is 0. + This patch is the preparation for msdkvp9enc element. + +2019-07-05 16:20:29 +1000 Matthew Waters + + * tests/check/libs/vkmemory.c: + tests/vulkan: fix copyright name + +2019-07-05 16:20:05 +1000 Matthew Waters + + * gst-libs/gst/vulkan/gstvkwindow.c: + * tests/check/libs/vkwindow.c: + * tests/check/meson.build: + vulkan/window: add property for the parent display + +2019-07-05 16:13:13 +1000 Matthew Waters + + * gst-libs/gst/vulkan/gstvkdevice.c: + * tests/check/libs/vkdevice.c: + * tests/check/meson.build: + vulkan/device: add property for the parent instance + +2019-07-04 17:22:07 +1000 Matthew Waters + + * ext/vulkan/gstvulkan.c: + * ext/vulkan/meson.build: + * ext/vulkan/shaders/meson.build: + * ext/vulkan/shaders/view_convert.frag: + * ext/vulkan/shaders/view_defines.h: + * ext/vulkan/vkviewconvert.c: + * ext/vulkan/vkviewconvert.h: + vulkan: add view converter element + +2019-07-04 17:19:31 +1000 Matthew Waters + + * ext/vulkan/vkcolorconvert.c: + vulkan: fix output framebuffer creation size + We don't scale when color converting so there is no impact. + +2019-07-05 01:26:26 +0200 Mathieu Duponchelle + + * gst/mpegtsmux/gstbasetsmux.c: + * gst/mpegtsmux/tsmux/tsmux.c: + tsmux: output smoothly increasing PTS when in CBR mode + Thanks to that, when its output is plugged into eg a udp sink, the + outgoing data can be output in a smoother way, reducing burstiness + +2019-07-05 00:17:10 +1000 Jan Schmidt + + * tests/check/libs/h264parser.c: + tests: Add h264parser SEI checks + Add some tests around SEI parsing. + +2019-06-28 14:59:18 +1000 Jan Schmidt + + * gst-libs/gst/codecparsers/gsth264parser.c: + h264parser lib: Add more profile_idc to the recognised set + Update the list of profile_idc recognised during SPS parsing + based on H.264 201704 + +2019-06-28 14:50:00 +1000 Jan Schmidt + + * ext/smoothstreaming/gstmssmanifest.c: + * gst-libs/gst/codecparsers/gsth264parser.c: + * gst-libs/gst/codecparsers/gsth264parser.h: + * gst/videoparsers/gsth264parse.c: + h264parse lib: Remove the SPS parse_vui_params flag + The SPS parsing functions take a parse_vui_param flag + to skip VUI parsing, but there's no indication in the output + SPS struct that the VUI was skipped. + The only caller that ever passed FALSE seems to be the + important gst_h264_parser_parse_nal() function, meaning - so the + cached SPS were always silently invalid. That needs changing + anyway, meaning noone ever passes FALSE. + I don't see any use for saving a few microseconds in + order to silently produce garbage, and since this is still + unstable API, let's remove the parse_vui_param. + +2019-06-28 14:46:36 +1000 Jan Schmidt + + * gst-libs/gst/codecparsers/gsth264parser.c: + h264parser lib: Warn on invalid pic_timing SEI + The spec calls for pic_timing SEI to be absent unless + there's either a CpbDpbDelaysPresentFlag or + pic_struct_present_flag in the SPS VUI data. If + both those flags are missing, warn. + +2019-06-28 14:42:19 +1000 Jan Schmidt + + * gst-libs/gst/codecparsers/gsth264parser.c: + h264parser lib: Always consume all SEI bits + If parsing an SEI errors out, it might not consume + all bits, leaving extra unparsed data in the reader + that the outer loop then tries to parse as a new + appended SEI. + Skip all the bits if any are left over to avoid + 'finding' extra garbage SEI in the parsing. + +2019-06-28 02:42:00 +1000 Jan Schmidt + + * gst-libs/gst/codecparsers/gsth264parser.c: + h264parser: Return BROKEN_LINK for missing SPS + When parsing SEI that require an SPS, return + GST_H264_PARSER_BROKEN_LINK instead of a generic + parsing error to let callers distinguish + bitstream errors from (expected) missing packets + when resuming decode. + +2019-06-28 01:26:19 +1000 Jan Schmidt + + * gst-libs/gst/codecparsers/gsth264parser.h: + h264parser: Improve documentation + Improve some docs around the NALU structure contents + +2019-06-28 00:27:12 +1000 Jan Schmidt + + * gst-libs/gst/codecparsers/gstmpegvideoparser.h: + gstmpegvideoparser: Documentation fixes + Fix some spelling mistakes and improve documentation in + the MPEG video parser + +2019-07-04 19:43:42 +0900 Seungha Yang + + * gst/mpegtsmux/tsmux/tsmuxstream.c: + tsmuxstream: Do not try return from void function + ../subprojects/gst-plugins-bad/gst/mpegtsmux/tsmux/tsmuxstream.c(1082): warning C4098: + 'tsmux_stream_get_es_descrs': 'void' function returning a value + +2019-07-04 19:42:48 +0900 Seungha Yang + + * 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/tsmux/tsmux.c: + * gst/mpegtsmux/tsmux/tsmux.h: + * gst/mpegtsmux/tsmux/tsmuxcommon.h: + * gst/mpegtsmux/tsmux/tsmuxstream.c: + * gst/mpegtsmux/tsmux/tsmuxstream.h: + mpegtsmux: Remove white space + +2019-07-04 14:16:17 +1000 Matthew Waters + + * ext/vulkan/meson.build: + * ext/vulkan/vksink.c: + * ext/vulkan/vksink.h: + * gst-libs/gst/vulkan/gstvkswapper.c: + * gst-libs/gst/vulkan/gstvkswapper.h: + * gst-libs/gst/vulkan/meson.build: + * gst-libs/gst/vulkan/vulkan.h: + vulkan: move swapper object to the gstvulkan library + Allows other sinks and/or user code to display to a VkSurface + +2019-07-04 14:03:51 +1000 Matthew Waters + + * ext/vulkan/meson.build: + * ext/vulkan/vkcolorconvert.c: + * ext/vulkan/vkdownload.c: + * ext/vulkan/vkfullscreenrender.c: + * ext/vulkan/vkfullscreenrender.h: + * ext/vulkan/vkimageidentity.c: + * ext/vulkan/vkswapper.c: + * ext/vulkan/vkupload.c: + * gst-libs/gst/vulkan/gstvktrash.c: + * gst-libs/gst/vulkan/gstvktrash.h: + * gst-libs/gst/vulkan/meson.build: + * gst-libs/gst/vulkan/vulkan.h: + * gst-libs/gst/vulkan/vulkan_fwd.h: + vulkan: move trash list to library + +2019-07-03 13:48:49 +1000 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/gstwebrtcbin.h: + * ext/webrtc/utils.c: + * ext/webrtc/utils.h: + webrtcbin: use the latest self-generated SDP as the basis for renegotiations + Fixes multiple errors when a webrtcbin renegotiation can switch between the + offerer and the answerer. + +2019-05-17 16:00:24 -0700 Ederson de Souza + + * ext/avtp/gstavtp.c: + avtp: Update documentation + +2019-03-26 14:25:56 -0700 Ederson de Souza + + * tests/check/Makefile.am: + * tests/check/elements/avtpcvfdepay.c: + * tests/check/meson.build: + tests: Add AVTP CVF depayloader tests + In these tests, some specially crafted buffers are sent to the + depayloader, simulating some scenarios and checking what comes out from + it. + +2019-03-25 17:23:49 -0700 Ederson de Souza + + * tests/check/Makefile.am: + * tests/check/elements/avtpcvfpay.c: + * tests/check/meson.build: + tests: Add AVTP CVF payloader tests + In these tests, some specially crafted buffers are sent to the + payloader, simulating some scenarios and checking what comes out from + it. + +2019-05-02 10:52:42 -0700 Andre Guedes + + * tests/check/Makefile.am: + * tests/check/elements/avtpsrc.c: + * tests/check/meson.build: + tests: Add AVTP source tests + This patch adds test cases for the AVTP source element. For now, only + properties get() and set() are covered. + +2019-04-25 14:16:46 -0700 Andre Guedes + + * tests/check/Makefile.am: + * tests/check/elements/avtpsink.c: + * tests/check/meson.build: + tests: Add AVTP sink tests + This patch adds test cases for the AVTP sink element. For now, only + properties get() and set() are covered. + +2019-04-09 14:10:36 -0700 Andre Guedes + + * tests/check/Makefile.am: + * tests/check/elements/avtpaafdepay.c: + * tests/check/meson.build: + tests: Add AAF depayloader tests + This patch adds test cases for the AAF depayloader element covering the + basic functionalities. + +2019-03-22 15:54:23 -0700 Andre Guedes + + * tests/check/Makefile.am: + * tests/check/elements/avtpaafpay.c: + * tests/check/meson.build: + tests: Add AAF payloader tests + This patch adds the infrastructure to test AVTP plugin elements. It also + adds a test case to check avtpaafpay element basic functionality. The + test consists in setting the element sink caps and properties, and + verifying if the output buffer is set as expected. + +2019-04-16 17:32:46 -0700 Ederson de Souza + + * docs/plugins/gst_plugins_cache.json: + * ext/avtp/meson.build: + docs: Add AVTP elements documentation + +2019-03-20 16:40:13 -0700 Ederson de Souza + + * ext/avtp/gstavtpcvfdepay.c: + * ext/avtp/gstavtpcvfdepay.h: + avtp: Add fragmented packets handling to CVF depayloader + This patch adds to the CVF depayloader the capability to regroup H.264 + fragmented FU-A packets. + After all packets are regrouped, they are added to the "stash" of H.264 + NAL units that will be sent as soon as an AVTP packet with M bit set is + found (usually, the last fragment). + Unrecognized fragments (such as first fragment seen, but with no Start + bit set) are discarded - and any NAL units on the "stash" are sent + downstream, as if a SEQNUM discontinuty happened. + +2019-03-12 15:46:16 -0700 Ederson de Souza + + * ext/avtp/Makefile.am: + * ext/avtp/gstavtp.c: + * ext/avtp/gstavtpcvfdepay.c: + * ext/avtp/gstavtpcvfdepay.h: + * ext/avtp/meson.build: + avtp: Introduce AVTP CVF depayloader element + This patch introduces the AVTP Compressed Video Format (CVF) depayloader + specified in IEEE 1722-2016 section 8. Currently, this depayloader only + supports H.264 encapsulation described in section 8.5. + Is also worth noting that only single NAL units are handled: aggregated + and fragmented payloads are not handled. + As stated in AVTP CVF payloader patch, AVTP timestamp is used to define + outgoing buffer DTS, while the H264_TIMESTAMP defines outgoing buffer + PTS. + When an AVTP packet is received, the extracted H.264 NAL unit is added to + a "stash" (the out_buffer) of H.264 NAL units. This "stash" is pushed + downstream as single buffer (with NAL units aggregated according to format + used on GStreamer, based on ISO/IEC 14496-15) as soon as we get the AVTP + packet with M bit set. + This patch groups NAL units using a fixed NAL size lenght, sent downstream + on the `codec_data` capability. + The "stash" of NAL units can be prematurely sent downstream if a + discontinuity (a missing SEQNUM) happens. + This patch reuses the infra provided by gstavtpbasedepayload.c. + +2019-03-05 18:09:13 -0800 Ederson de Souza + + * ext/avtp/gstavtpcvfpay.c: + avtp: Add fragmentation feature to CVF payloader + Based on `mtu` property, the CVF payloader is now capable of properly + fragmenting H.264 NAL units that are bigger than MTU in several AVTP + packets. + AVTP spec defines two methods for fragmenting H.264 packets, but this + patch only generates non-interleaved FU-A fragments. + Usually, only the last NAL unit from a group of NAL units in a single + buffer will be big enough to be fragmented. Nevertheless, only the last + AVTP packet sent for a group of NAL units will have the M bit set (this + means that the AVTP packet for the last fragment will only have the M + bit set if there's no more NAL units in the group). + +2019-02-28 15:49:02 -0800 Ederson de Souza + + * ext/avtp/Makefile.am: + * ext/avtp/gstavtp.c: + * ext/avtp/gstavtpcvfpay.c: + * ext/avtp/gstavtpcvfpay.h: + * ext/avtp/meson.build: + avtp: Introduce AVTP CVF payloader element + This patch introduces the AVTP Compressed Video Format (CVF) payloader + specified in IEEE 1722-2016 section 8. Currently, this payload only + supports H.264 encapsulation described in section 8.5. + Is also worth noting that only single NAL units are encapsulated: no + aggregation or fragmentation is performed by the payloader. + An interesting characteristic of CVF H.264 spec is that it defines an + H264_TIMESTAMP, in addition to the AVTP timestamp. The later is + translated to the GST_BUFFER_DTS while the former is translated to the + GST_BUFFER_PTS. From AVTP CVF H.264 spec, it is clear that the AVTP + timestamp is related to the decoding order, while the H264_TIMESTAMP is + an ancillary information to the H.264 decoder. + Upon receiving a buffer containing a group of NAL units, the avtpcvfpay + element will extract each NAL unit and payload them into individual AVTP + packets. The last AVTP packet generated for a group of NAL units will + have the M bit set, so the depayloader is able to properly regroup them. + The exact format of the buffer of NAL units is described on the + 'codec_data' capability, which is parsed by the avtpcvfpay, in the same + way done in rtph264pay. + This patch reuses the infra provided by gstavtpbasepayload.c. + +2019-01-23 15:17:48 -0800 Andre Guedes + + * ext/avtp/Makefile.am: + * ext/avtp/gstavtp.c: + * ext/avtp/gstavtpsrc.c: + * ext/avtp/gstavtpsrc.h: + * ext/avtp/meson.build: + avtp: Introduce AVTP source element + This patch introduces the avtpsrc element which implements a typical + network source. The avtpsrc element receives AVTPDUs encapsulated into + Ethernet frames and push them downstream in the GStreamer pipeline. + Implementation if pretty straightforward since the burden is implemented + by GstPushSrc class. + Likewise the avtpsink element, applications that utilize this element + must have CAP_NET_RAW capability since it is required by Linux to open + sockets from AF_PACKET domain. + +2019-01-23 10:56:10 -0800 Andre Guedes + + * ext/avtp/Makefile.am: + * ext/avtp/gstavtp.c: + * ext/avtp/gstavtpsink.c: + * ext/avtp/gstavtpsink.h: + * ext/avtp/meson.build: + avtp: Introduce AVTP sink element + This patch introduces the avtpsink elements which implements a typical + network sink. Implementation is pretty straightforward since the burden + is implemented by GstBaseSink class. + The avtpsink element defines three new properties: 1) network interface + from where AVTPDU should be transmitted, 2) destination MAC address + (usually a multicast address), and 3) socket priority (SO_PRIORITY). + Socket setup and teardown are done in start/stop virtual methods while + AVTPDU transmission is carried out by render(). AVTPDUs are encapsulated + into Ethernet frames and transmitted to the network via AF_PACKET socket + domain. Linux requires CAP_NET_RAW capability in order to open an + AF_PACKET socket so the application that utilize this element must have + it. For further info about AF_PACKET socket domain see packet(7). + Finally, AVTPDUs are expected to be transmitted at specific times - + according to the GstBuffer presentation timestamp - so the 'sync' + property from GstBaseSink is set to TRUE by default. + +2019-01-23 16:20:27 -0800 Andre Guedes + + * ext/avtp/Makefile.am: + * ext/avtp/gstavtp.c: + * ext/avtp/gstavtpaafdepay.c: + * ext/avtp/gstavtpaafdepay.h: + * ext/avtp/gstavtpbasedepayload.c: + * ext/avtp/gstavtpbasedepayload.h: + * ext/avtp/meson.build: + avtp: Introduce AAF depayloader element + This patch introduces the AAF depayloader element, the counterpart from + the AAF payloader. As expected, this element inputs AVTPDUs and outputs + audio raw data and supports AAF PCM encapsulation only. + The AAF depayloader srcpad produces a fixed format that is encoded + within the AVTPDU. Once the first AVTPDU is received by the element, the + audio features e.g. sample format, rate, number of channels, are decoded + and the srcpad caps are set accordingly. Also, at this point, the + element pushes a SEGMENT event downstream defining the segment according + to the AVTP presentation time. + All AVTP depayloaders will share some common code. For that reason, this + patch introduces the GstAvtpBaseDepayload abstract class that implements + common depayloader functionalities. AAF-specific functionalities are + implemented in the derived class GstAvtpAafDepay. + +2019-01-16 17:16:59 -0800 Andre Guedes + + * ext/avtp/Makefile.am: + * ext/avtp/gstavtp.c: + * ext/avtp/gstavtpaafpay.c: + * ext/avtp/gstavtpaafpay.h: + * ext/avtp/gstavtpbasepayload.c: + * ext/avtp/gstavtpbasepayload.h: + * ext/avtp/meson.build: + avtp: Introduce AAF payloader element + This patch introduces the AVTP Audio Format (AAF) payloader element from + the AVTP plugin. The element inputs audio raw data and outputs AVTP + packets (aka AVTPDUs), implementing a typical protocol payloader element + from GStreamer. + AAF is one of the available formats to transport audio data in an AVTP + system. AAF is specified in IEEE 1722-2016 section 7 and provides two + encapsulation mode: PCM and AES3. This patch implements PCM + encapsulation mode only. + The AAF payloader working mechanism consists of building the AAF header, + prepending it to the GstBuffer received on the sink pad, and pushing the + buffer downstream. Payloader parameters such as stream ID, maximum + transit time, time uncertainty, and timestamping mode are passed via + element properties. AAF doesn't support all possible sample format and + sampling rate values so the sink pad caps template from the payloader is + a subset of audio/x-raw. Additionally, this patch implements only + "normal" timestamping mode from AAF. "Sparse" mode should be implemented + in future. + Upcoming patches will introduce other AVTP payloader elements that will + have some common code. For that reason, this patch introduces the + GstAvtpBasePayload abstract class that implements common payloader + functionalities, and the GstAvtpAafPay class that extends the + GstAvtpBasePayload class, implementing AAF-specific functionalities. + The AAF payloader element is most likely to be used with the AVTP sink + element (to be introduced by a later patch) but it could also be used + with UDP sink element to implement AVTP over UDP as described in IEEE + 1722-2016 Annex J. + This element was inspired by RTP payloader elements. + +2019-01-14 10:18:42 -0800 Andre Guedes + + * configure.ac: + * ext/Makefile.am: + * ext/avtp/Makefile.am: + * ext/avtp/gstavtp.c: + * ext/avtp/meson.build: + * ext/meson.build: + * meson_options.txt: + avtp: AVTP plugin bootstrap code + This patch introduces the bootstrap code from the AVTP plugin (plugin + definition and init) as well as the build system files. Upcoming patches + will introduce payloaders, source and sink elements provided by the AVTP + plugin. These elements can be utilized by a GStreamer pipeline to + implement TSN audio/video applications. + Regarding the plugin build system files, both autotools and meson files + are introduced. The AVTP plugin is landed in ext/ since it has an + external dependency on libavtp, an opensource AVTP packetization + library. For further information about libavtp check [1]. + [1] https://github.com/AVnu/libavtp + +2019-07-04 01:12:06 +1000 Jan Schmidt + + * gst/videoparsers/gsth265parse.c: + h265parse: Don't segfault when SPS hasn't been seen yet. + Fix a recently introduced segfault. Don't de-reference a NULL + SPS pointer when attempting to update source caps before SPS + has been seen in the stream. + +2019-07-02 14:30:35 +0300 OleksandrKvl + + * gst/pcapparse/gstirtspparse.c: + * gst/pcapparse/gstirtspparse.h: + irtspparse: handle multiple and incomplete frames + Interleaved frames can be fragmented between + incoming frames. Thus, we can have multiple + frames within the single input frame, as well as + incomplete frame. Now it preserves parsing + state and handle both situations. + Fixes #991 + +2019-06-24 13:33:54 +0800 Haihao Xiang + + * sys/msdk/gstmsdkenc.c: + * sys/msdk/gstmsdkvpp.c: + msdk: don't share context between msdkvpp and msdkenc + msdkenc supports CSC implicitly, so it is possible that two VPP + processes are required when a pipeline contains msdkvpp and msdkenc. + Before this fix, msdkvpp and msdkenc may share the same context, hence + the same mfx session, which results in MFX_ERR_UNDEFINED_BEHAVIOR + in MSDK because a mfx session has at most one VPP process only + This fixes the broken pipelines below: + gst-launch-1.0 videotestsrc ! video/x-raw,format=I420 ! msdkh264enc ! \ + msdkh264dec ! msdkvpp ! video/x-raw,format=YUY2 ! fakesink + gst-launch-1.0 videotestsrc ! msdkvpp ! video/x-raw,format=YUY2 ! \ + msdkh264enc ! fakesink + +2019-06-21 18:18:44 -0700 U. Artie Eoff + + * sys/msdk/gstmsdkmjpegdec.c: + msdkmjpegdec: support 422 output + MSDK supports JPEG YUY2 (422 chroma) output color + format. The color format of input bitstream is + described by JPEGChromaFormat and JPEGColorFormat + fields in the mfxInfoMFX structure which is filled + in by the MFXVideoDECODE_DecodeHeader function. + To obtain lossless decoded output from 422 encoded + JPEGs, we must set the output color format in the + FourCC and ChromaFormat fields in the mfxFrameInfo + structure to the appropriate values at post_configure + so that they are propagated through to the srcpad + caps accordingly. + +2019-06-21 18:12:48 -0700 U. Artie Eoff + + * sys/msdk/gstmsdkdec.c: + * sys/msdk/gstmsdkdec.h: + msdkdec: add post_configure virtual method + A post_configure virtual method is added to allow + codec subclasses to adjust the initialized parameters + after MFXVideoDECODE_DecodeHeader is called from the + gstmsdkdec::gst_msdkdec_handle_frame function. + This is useful if codecs want to adjust the output + parameters based on the codec-specific decoding + options that are present in the mfxInfoMFX structure + after MFXVideoDECODE_DecodeHeader initializes them. + +2019-06-03 16:25:57 +0800 Haihao Xiang + + * sys/msdk/gstmsdkvp9dec.c: + msdkvp9dec: add support for VP9 444 + The output formats are VUYA for 8bit 444 and Y410 for 10bit 444. + +2019-05-31 16:34:54 +0800 Haihao Xiang + + * sys/msdk/gstmsdkh265dec.c: + msdkh265dec: add support for main-444-10/main-444-10-intra profile + The output format is Y410 + +2019-05-31 16:22:08 +0800 Haihao Xiang + + * sys/msdk/gstmsdksystemmemory.c: + * sys/msdk/gstmsdkvideomemory.c: + msdk: return a right pointer for Y410 when mapping a frame + +2019-06-03 14:05:07 +0800 Haihao Xiang + + * sys/msdk/msdk.c: + msdk: set right BitDepth and Shift for Y410 mfx frame + BitDepth is 10 and Shitf must be set to 0 when creating Y410 mfx + frame in MSDK + +2019-05-31 15:37:51 +0800 Haihao Xiang + + * sys/msdk/gstmsdkallocator_libva.c: + * sys/msdk/gstmsdksystemmemory.c: + msdk: set parameters in mfxFrameData for a MFX_FOURCC_Y410 frame + +2019-05-31 15:26:50 +0800 Haihao Xiang + + * sys/msdk/gstmsdkallocator_libva.c: + * sys/msdk/msdk_libva.c: + msdk: map MFX_FOURCC_Y410 to VA_FOURCC_Y410 + +2019-05-31 15:21:05 +0800 Haihao Xiang + + * sys/msdk/gstmsdkallocator_libva.c: + msdk: map GST_VIDEO_FORMAT_Y410 to VA_FOURCC_Y410 + +2019-05-31 15:13:47 +0800 Haihao Xiang + + * sys/msdk/msdk.c: + msdk: map GST_VIDEO_FORMAT_Y410 to MFX_FOURCC_Y410 + +2019-05-31 12:48:15 +0800 Haihao Xiang + + * sys/msdk/gstmsdkh265dec.c: + msdkh265dec: add support for main-444 profile + The output format is VUYA + +2019-05-30 11:13:26 +0800 Haihao Xiang + + * sys/msdk/gstmsdkh265dec.c: + msdkh265dec: add support for main-422-10/main-422-10-intra 10bit + The ouput format is Y210 + +2019-05-30 12:20:54 +0800 Haihao Xiang + + * sys/msdk/msdk.c: + msdk: set right BitDepth and Shift for Y210 mfx frame + BitDepth is 10 and Shitf must be set to 1 when creating Y210 mfx + frame in MSDK + +2019-05-30 11:10:58 +0800 Haihao Xiang + + * sys/msdk/gstmsdkallocator_libva.c: + * sys/msdk/gstmsdksystemmemory.c: + msdk: set parameters in mfxFrameData for a MFX_FOURCC_Y210 frame + +2019-05-30 11:02:08 +0800 Haihao Xiang + + * sys/msdk/gstmsdkallocator_libva.c: + * sys/msdk/msdk_libva.c: + msdk: map MFX_FOURCC_Y210 to VA_FOURCC_Y210 + +2019-05-30 09:56:43 +0800 Haihao Xiang + + * sys/msdk/gstmsdkallocator_libva.c: + msdk: map GST_VIDEO_FORMAT_Y210 to VA_FOURCC_Y210 + +2019-05-30 09:49:22 +0800 Haihao Xiang + + * sys/msdk/msdk.c: + msdk: map GST_VIDEO_FORMAT_Y210 to MFX_FOURCC_Y210 + +2019-05-28 16:50:59 +0800 Haihao Xiang + + * sys/msdk/gstmsdkh265dec.c: + msdkh265dec: add support for main-422-10/main-422-10-intra 8bit + The output format is YUY2 + +2019-06-28 15:46:22 +1000 Jan Schmidt + + * sys/uvch264/Makefile.am: + uvch264: Fix autotools build. + Add gstuvch264deviceprovider.c to the Makefile.am missed + in MR 387 + +2019-06-26 19:53:51 +0900 Seungha Yang + + * gst/rtp/gstrtpsink.c: + * gst/rtp/gstrtpsrc.c: + rtp: Fix incompatible type build warning + Use GstURIType instead of guint + ../subprojects/gst-plugins-bad/gst/rtp/gstrtpsink.c(575): + warning C4133: '=': incompatible types ... + ../subprojects/gst-plugins-bad/gst/rtp/gstrtpsrc.c(725): + warning C4133: '=': incompatible types ... + +2019-06-25 20:37:57 +0200 Juan Navarro + + * ext/dtls/gstdtlsagent.c: + dtlsagent: Clear the certificate upon finalize + Cleaning this up was likely just forgotten + +2019-06-25 20:37:38 +0200 Juan Navarro + + * ext/dtls/gstdtlsdec.c: + dtlsdec: Avoid duplicate ref when passing certificate property + The agent itself will take a ref on the property setter, so we'll be + left with two references to the certificate object, when actually there + should be only one + +2019-05-20 23:19:19 +0900 Seungha Yang + + * sys/bluez/meson.build: + meson: bluez: Early terminate configure on Windows + This plugin is for linux bluetooth stack. So the early termination can save + configure time on Windows (i.e., we can avoid glib subproject fallback) + +2019-06-12 11:12:37 +0100 Philippe Normand + + * ext/wpe/WPEThreadedView.cpp: + * ext/wpe/WPEThreadedView.h: + wpe: Port for WPEWebKit 2.25.x + When WPEBackend-fdo >= 1.3.0 is detected, the threaded view now relies on the + wpe_fdo_egl_exported_image API instead of the EGLImageKHR-based API which is + going to be deprecated in 2.26. The GLib sources created by the view now use the + default priority as well, the custom priority is no longer required. + +2019-06-24 18:39:35 +0300 OleksandrKvl + + * gst/pcapparse/gstpcapparse.c: + pcapparse: Fix handling of TCP payload length + The length of the TCP payload is the IP plus TCP header length + subtracted from the IP datagram length specified in the IP header. + Prior to this, the size was calculated incorrectly, considering + all data after TCP header as a payload till the end of a packet. + Fixes #995 + +2019-06-24 13:50:19 +0300 Sebastian Dröge + + * gst/timecode/gstavwait.c: + avwait: Make sure to never unref an input buffer we already unreffed before + +2019-06-20 19:59:16 +0300 Sebastian Dröge + + * gst/timecode/gstavwait.c: + * gst/timecode/gstavwait.h: + avwait: Add support for setting an end running time + It was possible to set a start running time and start/end timecode + before, but not an end running time. + +2019-06-20 17:50:43 +0300 Sebastian Dröge + + * gst/timecode/gstavwait.c: + avwait: Correctly stop recording and signal recording stop on EOS + If recording is set to FALSE after the last audio or video buffer and + before the EOS event then recording stop is never signalled. + Similarly, we should signal recording stop once both audio and video are + EOS, regardless of the recording property, as there's nothing to be + recorded anymore. + +2019-06-24 16:22:47 +1000 Matthew Waters + + * ext/vulkan/vksink.c: + * ext/vulkan/vkswapper.c: + * ext/vulkan/vkswapper.h: + vkswapper: support rescaling to the output size + +2019-06-24 15:32:25 +1000 Matthew Waters + + * ext/vulkan/vksink.c: + * ext/vulkan/vkswapper.c: + vksink: Don't take vulkan buffer's as input + +2019-06-24 15:30:56 +1000 Matthew Waters + + * tests/check/elements/vkcolorconvert.c: + tests/vkcolorconvert: remove extra instance/device creation + It's unnecessary. + +2019-06-20 08:59:22 +0300 Sebastian Dröge + + * sys/decklink/gstdecklink.cpp: + decklink: Correctly ensure >=16 byte alignment for the buffers we allocate + We'll ensure at least 64 byte alignment for AVX2 but 16 byte alignment + is what is required by the decklink SDK. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/986 + +2019-06-23 17:03:32 +0100 Philippe Normand + + * ext/webrtc/webrtcdatachannel.c: + webrtc: Fix data-channel send-string doc + +2019-06-20 10:04:06 +0300 Sebastian Dröge + + * sys/decklink/gstdecklinkvideosrc.cpp: + decklinkvideosrc: Notify about signal loss even when dropping no-signal frames + Otherwise the application has no way of knowing that signal loss + happened other than noticing a gap between actual frames. + +2019-06-20 14:36:02 +1000 Matthew Waters + + * ext/vulkan/shaders/ayuv_to_rgb.frag: + * ext/vulkan/shaders/downsample_ayuv.glsl: + vulkan: remove unused downsample AYUV shader + +2019-06-19 19:43:14 +0200 Mathieu Duponchelle + + * ext/webrtc/transportreceivebin.c: + * ext/webrtc/transportreceivebin.h: + webrtcbin: fix DTLS when receivebin is set to DROP + Regression introduced by b4bdcf15b7237eb5c5943c4f746701a477333000 + This commit prevents the handshake from reaching dtlsdec when + the receive state of the receive bin is set to DROP (for example + when transceivers are sendonly). + This preserves the intent of the commit, by blocking the bin + at its sinks until the receive state is no longer BLOCK, but + makes sure the handshake still goes through, by only dropping + data at the src pads, as was the case before. + +2019-06-20 01:39:53 +1000 Matthew Waters + + * ext/vulkan/shaders/meson.build: + * ext/vulkan/shaders/nv12_to_rgb.frag: + * ext/vulkan/shaders/rgb_to_nv12.frag: + * ext/vulkan/shaders/upsample_nv12.glsl: + * ext/vulkan/vkcolorconvert.c: + * ext/vulkan/vkfullscreenrender.c: + vkcolorconvert: add support for RGB<->NV12 + +2019-06-20 01:36:55 +1000 Matthew Waters + + * ext/vulkan/vkupload.c: + * gst-libs/gst/vulkan/gstvkbuffermemory.c: + * gst-libs/gst/vulkan/gstvkbufferpool.c: + * tests/check/elements/vkcolorconvert.c: + vkbuffermemory: report requested size of the memory + Rather than using Vulkan's much larger aligned sizes. Fixes multi-planer + video with the GstVideoFrame API. + +2019-06-19 19:09:21 +1000 Matthew Waters + + * ext/vulkan/shaders/ayuv_to_rgb.frag: + * ext/vulkan/shaders/color_convert_generic.glsl: + * ext/vulkan/shaders/downsample_ayuv.glsl: + * ext/vulkan/shaders/meson.build: + * ext/vulkan/shaders/rgb_to_ayuv.frag: + * ext/vulkan/shaders/rgb_to_yuy2.frag: + * ext/vulkan/shaders/swizzle.glsl: + * ext/vulkan/shaders/upsample_ayuv.glsl: + * ext/vulkan/shaders/upsample_yuy2.glsl: + * ext/vulkan/shaders/uyvy_to_rgb.frag: + * ext/vulkan/shaders/yuy2_to_rgb.frag: + * ext/vulkan/vkcolorconvert.c: + * ext/vulkan/vkcolorconvert.h: + vulkancolorconvert: support RGB <-> AYUV/YUY2/UYVY + +2019-06-19 15:28:42 +1000 Matthew Waters + + * ext/vulkan/vktrash.c: + * ext/vulkan/vktrash.h: + vktrash: add mini_object_unref destroy function + +2019-06-19 15:27:11 +1000 Matthew Waters + + * ext/vulkan/vkfullscreenrender.c: + * ext/vulkan/vkimageidentity.c: + vkfullscreenrender: create descriptor sets later + The desciptor sets may be dependant on the caps + +2019-06-19 15:25:18 +1000 Matthew Waters + + * ext/vulkan/shaders/meson.build: + vulkan/shaders: change glslc compilation args based on configurations + Add depfile support so that modifying an #included glsl snippet + rebuilds all the dependant shaders. + +2019-06-13 18:05:40 +1000 Matthew Waters + + * ext/vulkan/gstvulkan.c: + * ext/vulkan/meson.build: + * ext/vulkan/shaders/meson.build: + * ext/vulkan/shaders/swizzle.frag: + * ext/vulkan/shaders/swizzle.glsl: + * ext/vulkan/shaders/swizzle_and_clobber_alpha.frag: + * ext/vulkan/vkcolorconvert.c: + * ext/vulkan/vkcolorconvert.h: + * tests/check/elements/vkcolorconvert.c: + * tests/check/meson.build: + vulkan: add a color conversion element + Currently converts between all 4-component RGBA/RGBx formats. + +2019-06-13 17:57:51 +1000 Matthew Waters + + * gst-libs/gst/vulkan/gstvkformat.c: + * gst-libs/gst/vulkan/gstvkformat.h: + * gst-libs/gst/vulkan/meson.build: + * gst-libs/gst/vulkan/vulkan.h: + vulkan: add some information on vulkan formats + +2019-06-13 17:44:22 +1000 Matthew Waters + + * ext/vulkan/vkupload.c: + vkupload: Also implement copying non vulkan memory into vulkan buffers + The only way we can upload things is through our memory so any + non-vulkan memory that appears must be copied into our memory. + +2019-06-13 17:05:44 +1000 Matthew Waters + + * ext/vulkan/gstvulkan.c: + * ext/vulkan/meson.build: + * ext/vulkan/vkdownload.c: + * ext/vulkan/vkdownload.h: + vulkan: add download element + Currently only downloads images into a host-visible buffer and + synchronises immediately. + +2019-06-11 02:05:32 +1000 Matthew Waters + + * ext/vulkan/meson.build: + * ext/vulkan/shaders/identity.frag: + * ext/vulkan/shaders/identity.vert: + * ext/vulkan/vkfullscreenrender.c: + * ext/vulkan/vkfullscreenrender.h: + * ext/vulkan/vkimageidentity.c: + * ext/vulkan/vkimageidentity.h: + vulkan/identity: Split out most rendering code to a base class + A simple base class that renders a 2d fullscreen quad parallel to the + screen surface inside the view frustum. + +2019-06-12 18:25:00 +1000 Matthew Waters + + * ext/vulkan/vkupload.c: + vkupload: fix a structure sType + +2019-06-11 18:37:59 +1000 Matthew Waters + + * gst-libs/gst/vulkan/gstvkdevice.c: + * gst-libs/gst/vulkan/gstvkdisplay.c: + * gst-libs/gst/vulkan/gstvkinstance.c: + * gst-libs/gst/vulkan/gstvkqueue.c: + vulkan: ensure initialization of a couple of debug categories + Needed when some of the context querying functions can be called before + an instance has been created. + +2019-05-21 17:19:00 +1000 Matthew Waters + + * ext/vulkan/vksink.c: + * ext/vulkan/vkswapper.c: + * ext/vulkan/vkswapper.h: + vksink: Retrieve vulkan queue earlier + Allows using the swapper's queue over upstream's queue. The swapper + will check for the necessary presentation support that upstream may not + consider. + +2019-06-19 14:13:02 +0300 Sebastian Dröge + + * gst/videoparsers/gstmpegvideoparse.c: + mpegvideoparse: Pass through interlace-mode field from upstream if available + We generally always prefer the information from upstream for other + metadata (pixel-aspect-ration, etc.) and should also do so here. + Other parsers (h264parse) already do the same. + +2019-06-19 13:31:39 +0300 Sebastian Dröge + + * ext/zbar/gstzbar.c: + zbar: Include running-time, stream-time and duration in the messages + The timestamp/PTS alone is meaningless without the segment and usually + applications care about the running-time or stream-time. + This also keeps the messages in sync with the spectrum and level + elements. + +2017-11-04 20:40:18 +0900 Seungha Yang + + * tests/check/elements/hlsdemux_m3u8.c: + tests: hls: Add a test case for EXT-X-MAP tag + https://bugzilla.gnome.org/show_bug.cgi?id=776928 + +2019-05-12 19:21:23 +0900 Seungha Yang + + * ext/hls/meson.build: + * tests/check/elements/hlsdemux_m3u8.c: + * tests/check/meson.build: + tests: Enable hls m3u8 unit test with meson build + +2017-11-04 20:39:39 +0900 Seungha Yang + + * ext/hls/gsthlsdemux.c: + hlsdemux: Set fragment header uri if exists + To allow downloading fragment hearder, set its uri if there is + available "Media Initialization" parsed from EXT-X-MAP tag + https://bugzilla.gnome.org/show_bug.cgi?id=776928 + +2017-11-04 20:15:33 +0900 Seungha Yang + + * ext/hls/m3u8.c: + * ext/hls/m3u8.h: + hls: m3u8: Parsing EXT-X-MAP tag to store initialization data + EXT-X-MAP tag informs media initialization data, + such as moov box in ISOBMFF case and PAT/PMT for MPEG TS stream. + https://bugzilla.gnome.org/show_bug.cgi?id=776928 + +2017-01-30 14:13:06 +0900 Seungha Yang + + * ext/hls/gsthlsdemux.c: + hlsdemux: Do not clear/advance fragment by finished header downloading + Header data must be forwarded to downstream, but if demux does not finish + to finding type (e.g., ts, mp4 and etc), this header data can be cleared + by _stream_clear_pending_data(). Moreover, although demux finish downloading + header data, still it has fragment date to be downloaded, fragment sequence + shouldn't be advanced yet at that moment. + https://bugzilla.gnome.org/show_bug.cgi?id=776928 + +2019-02-19 21:46:43 +0900 Seungha Yang + + * tests/check/libs/insertbin.c: + tests: insertbin: Don't use duplicated variable name + ../subprojects/gst-plugins-bad/tests/check/libs/insertbin.c(46): warning C4273: + 'mutex': ... + The "mutex" was declared in gstcheck.h already + +2019-06-17 14:58:50 +1000 Matthew Waters + + * sys/applemedia/meson.build: + applemedia: add the '-fobjc-arc' for darwin/ios + We use ARC so we need to signal that to the compiler. + +2019-06-03 12:18:13 -0400 Thibault Saunier + + * sys/uvch264/gstuvch264.c: + * sys/uvch264/gstuvch264deviceprovider.c: + * sys/uvch264/meson.build: + uvch264: Implement device provider + +2019-06-03 12:17:22 -0400 Thibault Saunier + + * sys/uvch264/gstuvch264_src.c: + * sys/uvch264/gstuvch264_src.h: + * sys/uvch264/uvc_h264.c: + * sys/uvch264/uvc_h264.h: + uvch264: Factor out checking if v4l2device is uvc compatible + +2019-04-08 19:24:00 +0200 Nicola Murino + + * gst/videoparsers/gsth265parse.c: + h265parse: update parser state and header flag when using fallback sps + When sps parsing fails we use a fallback sps from the caps, since we + have got an sps we need to update parser state and header as in the case the + sps was successfully parsed + +2018-11-26 17:23:21 +0100 Nicola Murino + + * gst/videoparsers/gsth264parse.c: + h264parse: update parser state and header flag when using fallback sps + When sps parsing fails we use a fallback sps from the caps, since we + have got an sps we need to update parser state and header as in the case the + sps was successfully parsed + Closes #503 + +2019-05-31 10:12:54 -0400 Thibault Saunier + + * gst/videoparsers/gsth264parse.c: + h264parse: Post a WARNING when data is broken + +2019-06-12 15:47:52 +0900 Seungha Yang + + * gst/videoparsers/gsth265parse.c: + h265parse: Add more string representations of extension profiles + +2019-06-12 15:32:17 +0900 Seungha Yang + + * gst-libs/gst/codecparsers/gsth265parser.c: + * gst-libs/gst/codecparsers/gsth265parser.h: + h265parser: Add more profiles to known type + "High Throughput", "Multiview", "Scalable", "3D", "Screen Content Coding", + and "Scalable format range extensions" profiles can be supported + via h265parser APIs now. + +2019-04-18 18:12:34 +0900 Dong Il Park + + * gst/videoparsers/gsth265parse.c: + h265parse: Update framerate when we found vps_timing_info + The timing_info was described at vps or vui parameter. + So we can update the framerate field of GstCaps when we could + parse vps_timing_info parameters. + +2019-04-18 16:54:51 +0900 Dong Il Park + + * gst-libs/gst/codecparsers/gsth265parser.c: + h265parser: Use vps_timing_info when not present in vui + The same timing_info will be present at vps or vui. + When the timeing_info is present in the VPS, vui_timing_info + , when present, shall be equal to vps_timing_info, and when + not present, is inferred to be equal to vps_timing_info. + +2019-06-08 22:57:21 +0900 Seungha Yang + + * gst-libs/gst/vulkan/gstvkapi.h: + * gst-libs/gst/vulkan/gstvkconfig.h.meson: + * gst-libs/gst/vulkan/gstvkdisplay.c: + * gst-libs/gst/vulkan/gstvkdisplay.h: + * gst-libs/gst/vulkan/gstvkwindow.c: + * gst-libs/gst/vulkan/meson.build: + * gst-libs/gst/vulkan/win32/gstvkwindow_win32.c: + * gst-libs/gst/vulkan/win32/gstvkwindow_win32.h: + vulkan: Add support WIN32 for Windows + It's almost a fork of glwindow_win32 implementation. + To build on Windows, Vulkan SDK (at https://vulkan.lunarg.com/sdk/home) + and VK_SDK_PATH environment are required. Note that VK_SDK_PATH environment + setting is a part of the SDK installation. + +2019-06-12 10:12:14 +0200 Arun Raghavan + + * sys/bluez/gstavdtputil.c: + avdtpsrc: Honour initial transport volume setting before connection + We make the binding go from the avdtpsrc to the transport, so that any + initial setting before a connection made is used. + +2019-06-11 12:10:13 -0400 Thibault Saunier + + * sys/uvch264/gstuvch264_src.c: + uvch264src: Make sure we set our segment + We were not setting self->segment and we are using it + when notifying downstream that we handled a REQUEST_KEY_UNIT + event, leading to all sort of criticals. + +2019-06-11 14:28:22 +0900 Seungha Yang + + * gst/videoparsers/gsth265parse.c: + h265parse: Don't miss constraint indicator flags in codec data + Set more unhandled flags to general_constraint_indicator_flags field. + The field is required for building "Codecs" parameter as defined + ISO/IEC 14496-15 Annex E. The resulting "Codecs" string might be used + in various places (e.g., HLS/DASH manifest, browser, player, etc) + +2019-06-07 14:12:25 +0000 Marc Leeman + + * gst/rtp/meson.build: + rtpmanagerbad: fix the plugin registration + After compilation, the compiled library needs to be added to the list + of plugin libraries. + . + Also, fix for static builds + +2019-06-06 18:22:43 +0100 Tim-Philipp Müller + + * configure.ac: + * docs/plugins/gst_plugins_cache.json: + * meson_options.txt: + * sys/Makefile.am: + * sys/meson.build: + * sys/vdpau/Makefile.am: + * sys/vdpau/gstvdpau.c: + * sys/vdpau/gstvdpdecoder.c: + * sys/vdpau/gstvdpdecoder.h: + * sys/vdpau/gstvdpdevice.c: + * sys/vdpau/gstvdpdevice.h: + * sys/vdpau/gstvdpoutputbuffer.c: + * sys/vdpau/gstvdpoutputbuffer.h: + * sys/vdpau/gstvdpoutputbufferpool.c: + * sys/vdpau/gstvdpoutputbufferpool.h: + * sys/vdpau/gstvdpsink.c: + * sys/vdpau/gstvdpsink.h: + * sys/vdpau/gstvdputils.c: + * sys/vdpau/gstvdputils.h: + * sys/vdpau/gstvdpvideobufferpool.c: + * sys/vdpau/gstvdpvideobufferpool.h: + * sys/vdpau/gstvdpvideomemory.c: + * sys/vdpau/gstvdpvideomemory.h: + * sys/vdpau/gstvdpvideopostprocess.c: + * sys/vdpau/gstvdpvideopostprocess.h: + * sys/vdpau/h264/gsth264dpb.c: + * sys/vdpau/h264/gsth264dpb.h: + * sys/vdpau/h264/gstvdph264dec.c: + * sys/vdpau/h264/gstvdph264dec.h: + * sys/vdpau/meson.build: + * sys/vdpau/mpeg/gstvdpmpegdec.c: + * sys/vdpau/mpeg/gstvdpmpegdec.h: + * sys/vdpau/mpeg4/gstmpeg4frame.c: + * sys/vdpau/mpeg4/gstmpeg4frame.h: + * sys/vdpau/mpeg4/gstvdpmpeg4dec.c: + * sys/vdpau/mpeg4/gstvdpmpeg4dec.h: + * sys/vdpau/mpeg4/mpeg4util.c: + * sys/vdpau/mpeg4/mpeg4util.h: + * tests/check/Makefile.am: + Remove VDPAU plugin + It's been replaced by NVENC/NVDEC and even NVIDIA doesn't + support VDPAU any longer and hasn't for quite some time. + The plugin has been unmaintained and unsupported for a very + long time, and given the track record over the last 10 years + it seems highly unlikely anyone is going to make it work well, + not to mention adding plumbing for proper zero-copy or + gst-gl integration. + Closes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/828 + +2019-06-06 18:36:00 +0100 Tim-Philipp Müller + + * Makefile.am: + autotools: fix distcheck + +2019-06-05 17:10:19 +0100 Tim-Philipp Müller + + * Makefile.am: + autotools: remove gst/rtp/ from cruft dir list + +2019-06-05 16:58:32 +0100 Tim-Philipp Müller + + * gst/rtp/Makefile.am: + rtp: fix autotools build some more + +2019-06-05 12:47:16 +0100 Philippe Normand + + * ext/wpe/WPEThreadedView.cpp: + * ext/wpe/WPEThreadedView.h: + * ext/wpe/gstwpesrc.cpp: + wpe: Fix build with -Werror enabled + Including gl.h from WPEThreadedView.h leads to GST_LEVEL_DEFAULT detected as + redefined. The proposed fix is to include config.h from the CPP implementation + file and disable gl.h inclusion in the header, by using forward declarations. + +2019-06-05 11:46:49 +0300 Sebastian Dröge + + * gst/timecode/gstavwait.c: + avwait: Allow start and end timecode to be set back to NULL + And check everywhere if they're NULL before accessing them. + +2019-06-05 08:12:10 +0200 Niels De Graef + + * gst-libs/gst/audio/gstplanaraudioadapter.h: + * gst-libs/gst/insertbin/gstinsertbin.h: + * gst-libs/gst/webrtc/dtlstransport.h: + * gst-libs/gst/webrtc/icetransport.h: + * gst-libs/gst/webrtc/rtcsessiondescription.h: + * gst-libs/gst/webrtc/rtpreceiver.h: + * gst-libs/gst/webrtc/rtpsender.h: + * gst-libs/gst/webrtc/rtptransceiver.h: + Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally + Since we started depending on GLib 2.44, we can be sure this macro is + defined (it will be a no-op on compilers that don't support it). + +2019-05-21 14:04:07 +1000 Matthew Waters + + * tests/check/libs/vkmemory.c: + tests/vulkan: allow instance creation failures + Usually means that there is no vulkan implementation available. + We skip tests in that case + +2019-05-20 13:54:56 +1000 Matthew Waters + + * tests/check/libs/vkmemory.c: + * tests/check/meson.build: + test/vulkan: add simple memory test + +2019-05-20 13:48:27 +1000 Matthew Waters + + * ext/vulkan/vkupload.c: + vkupload: remove debugging error log + +2019-05-20 13:46:56 +1000 Matthew Waters + + * ext/vulkan/vkimageidentity.c: + * ext/vulkan/vkswapper.c: + * ext/vulkan/vkupload.c: + * gst-libs/gst/vulkan/gstvkbarrier.h: + * gst-libs/gst/vulkan/gstvkbuffermemory.c: + * gst-libs/gst/vulkan/gstvkbuffermemory.h: + * gst-libs/gst/vulkan/gstvkimagememory.c: + * gst-libs/gst/vulkan/gstvkimagememory.h: + * gst-libs/gst/vulkan/meson.build: + * gst-libs/gst/vulkan/vulkan.h: + * gst-libs/gst/vulkan/vulkan_fwd.h: + vulkan: implement the correct memory barriers necessary + Vulkan validation layers are finally silent! + +2019-05-16 22:39:51 +1000 Matthew Waters + + * ext/vulkan/vkswapper.c: + * ext/vulkan/vkupload.c: + vulkan: remove uneeded buffer inheritence information + buffer inheritence informationi is only required for secondary command + buffers which we are not creating + +2019-05-16 19:48:24 +1000 Matthew Waters + + * ext/vulkan/gstvulkan.c: + * ext/vulkan/meson.build: + * ext/vulkan/shaders/bin2array.py: + * ext/vulkan/shaders/identity.frag: + * ext/vulkan/shaders/identity.vert: + * ext/vulkan/shaders/meson.build: + * ext/vulkan/vkimageidentity.c: + * ext/vulkan/vkimageidentity.h: + * ext/vulkan/vkshader.c: + * ext/vulkan/vkshader.h: + vulkan: add a new image copying element + Copies using the graphics pipeline, an input image and renders to an + output image. + +2019-05-16 19:39:20 +1000 Matthew Waters + + * gst-libs/gst/vulkan/gstvkmemory.c: + vkmemory: fix allocation of sizes less than the alignment + Avoids allocating a 0-sized device memory which is invalid vulkan usage + +2019-05-16 19:38:35 +1000 Matthew Waters + + * gst-libs/gst/vulkan/gstvkbufferpool.c: + * gst-libs/gst/vulkan/gstvkimagebufferpool.c: + vk*pool: expand usage hints to cover use in a renderpass + +2019-05-16 19:36:18 +1000 Matthew Waters + + * gst-libs/gst/vulkan/gstvkimagememory.c: + vkformat: fix format conversion for matching vulkan formats + Other formats still need a swizzle or conversion. + +2019-05-16 19:35:11 +1000 Matthew Waters + + * gst-libs/gst/vulkan/gstvkbuffermemory.c: + vkbuffermemory: bufferview's are only for texture-like memory + +2019-05-16 19:34:41 +1000 Matthew Waters + + * ext/vulkan/vkupload.c: + vkupload: add raw->vulkanimage uploader + +2019-05-16 19:33:06 +1000 Matthew Waters + + * ext/vulkan/vktrash.c: + * ext/vulkan/vktrash.h: + vktrash: add more destruction of vulkan types + +2019-05-09 21:50:47 +1000 Matthew Waters + + * ext/vulkan/vkswapper.c: + * ext/vulkan/vkupload.c: + * gst-libs/gst/vulkan/gstvkbuffermemory.c: + * gst-libs/gst/vulkan/gstvkimagememory.c: + * gst-libs/gst/vulkan/gstvkinstance.c: + * gst-libs/gst/vulkan/gstvkmacros.h: + * gst-libs/gst/vulkan/vulkan.h: + vulkan: use c99 designated initializers where possible + Makes the code much easier to read and allows removing our terrible + macros for structure initialization. + +2019-05-08 21:26:17 +1000 Matthew Waters + + * ext/vulkan/vksink.c: + * ext/vulkan/vkswapper.c: + * ext/vulkan/vkupload.c: + vkswapper: support displaying memory:VulkanImage + +2019-05-08 14:50:29 +1000 Matthew Waters + + * ext/vulkan/meson.build: + * ext/vulkan/vkupload.c: + * ext/vulkan/vkupload.h: + * gst-libs/gst/vulkan/gstvkbufferpool.c: + * gst-libs/gst/vulkan/gstvkimagebufferpool.c: + * gst-libs/gst/vulkan/gstvkimagebufferpool.h: + * gst-libs/gst/vulkan/meson.build: + * gst-libs/gst/vulkan/vulkan.h: + * gst-libs/gst/vulkan/vulkan_fwd.h: + vkupload: implement buffer to image uploader + +2019-05-08 14:48:43 +1000 Matthew Waters + + * gst-libs/gst/vulkan/gstvkqueue.c: + vkqueue: unly unref the context query if it succeeds + +2019-05-08 14:47:43 +1000 Matthew Waters + + * ext/vulkan/vksink.c: + vulkansink: Respond to queue queries + +2019-04-11 16:52:54 +1000 Matthew Waters + + * gst-libs/gst/vulkan/gstvkbuffermemory.c: + * gst-libs/gst/vulkan/gstvkbuffermemory.h: + * gst-libs/gst/vulkan/gstvkbufferpool.c: + * gst-libs/gst/vulkan/gstvkcommandpool.c: + * gst-libs/gst/vulkan/gstvkcommandpool.h: + * gst-libs/gst/vulkan/gstvkdevice.c: + * gst-libs/gst/vulkan/gstvkdevice.h: + * gst-libs/gst/vulkan/gstvkdisplay.c: + * gst-libs/gst/vulkan/gstvkdisplay.h: + * gst-libs/gst/vulkan/gstvkerror.c: + * gst-libs/gst/vulkan/gstvkfence.c: + * gst-libs/gst/vulkan/gstvkfence.h: + * gst-libs/gst/vulkan/gstvkimagememory.c: + * gst-libs/gst/vulkan/gstvkimagememory.h: + * gst-libs/gst/vulkan/gstvkinstance.c: + * gst-libs/gst/vulkan/gstvkmemory.c: + * gst-libs/gst/vulkan/gstvkmemory.h: + * gst-libs/gst/vulkan/gstvkqueue.c: + * gst-libs/gst/vulkan/gstvkqueue.h: + * gst-libs/gst/vulkan/gstvkutils.c: + * gst-libs/gst/vulkan/gstvkutils.h: + * gst-libs/gst/vulkan/gstvkwindow.c: + * gst-libs/gst/vulkan/gstvkwindow.h: + * gst-libs/gst/vulkan/meson.build: + * gst-libs/gst/vulkan/vulkan_fwd.h: + vulkan: large docs update + +2019-04-10 14:27:26 +1000 Matthew Waters + + * ext/vulkan/vkswapper.c: + * ext/vulkan/vkswapper.h: + * ext/vulkan/vktrash.c: + * ext/vulkan/vktrash.h: + * gst-libs/gst/vulkan/gstvkcommandpool.c: + * gst-libs/gst/vulkan/gstvkcommandpool.h: + * gst-libs/gst/vulkan/gstvkdevice.c: + * gst-libs/gst/vulkan/gstvkdevice.h: + * gst-libs/gst/vulkan/gstvkqueue.c: + * gst-libs/gst/vulkan/gstvkqueue.h: + * gst-libs/gst/vulkan/meson.build: + * gst-libs/gst/vulkan/vulkan.h: + * gst-libs/gst/vulkan/vulkan_fwd.h: + vulkan: add a command pool object for tracking + +2019-04-10 11:56:59 +1000 Matthew Waters + + * ext/vulkan/vkswapper.c: + vkswapper: don't output duplicate formats + +2019-04-08 21:35:22 +1000 Matthew Waters + + * configure.ac: + * ext/Makefile.am: + * ext/vulkan/.gitignore: + * ext/vulkan/Makefile.am: + * ext/vulkan/meson.build: + * ext/vulkan/vksink.c: + * ext/vulkan/vksink.h: + * ext/vulkan/vkswapper.c: + * ext/vulkan/vkswapper.h: + * ext/vulkan/vktrash.c: + * ext/vulkan/vktrash.h: + * ext/vulkan/vkupload.h: + * ext/vulkan/vkutils.h: + * ext/vulkan/wayland/Makefile.am: + * ext/vulkan/xcb/Makefile.am: + * gst-libs/gst/meson.build: + * gst-libs/gst/vulkan/.gitignore: + * gst-libs/gst/vulkan/cocoa/gstvkcocoa_utils.h: + * gst-libs/gst/vulkan/cocoa/gstvkdisplay_cocoa.h: + * gst-libs/gst/vulkan/cocoa/gstvkdisplay_cocoa.m: + * gst-libs/gst/vulkan/cocoa/gstvkwindow_cocoa.h: + * gst-libs/gst/vulkan/cocoa/gstvkwindow_cocoa.m: + * gst-libs/gst/vulkan/gstvkapi.h: + * gst-libs/gst/vulkan/gstvkbuffermemory.c: + * gst-libs/gst/vulkan/gstvkbuffermemory.h: + * gst-libs/gst/vulkan/gstvkbufferpool.c: + * gst-libs/gst/vulkan/gstvkbufferpool.h: + * gst-libs/gst/vulkan/gstvkconfig.h.meson: + * gst-libs/gst/vulkan/gstvkdevice.c: + * gst-libs/gst/vulkan/gstvkdevice.h: + * gst-libs/gst/vulkan/gstvkdisplay.c: + * gst-libs/gst/vulkan/gstvkdisplay.h: + * gst-libs/gst/vulkan/gstvkerror.c: + * gst-libs/gst/vulkan/gstvkerror.h: + * gst-libs/gst/vulkan/gstvkfence.c: + * gst-libs/gst/vulkan/gstvkfence.h: + * gst-libs/gst/vulkan/gstvkimagememory.c: + * gst-libs/gst/vulkan/gstvkimagememory.h: + * gst-libs/gst/vulkan/gstvkinstance.c: + * gst-libs/gst/vulkan/gstvkinstance.h: + * gst-libs/gst/vulkan/gstvkmacros.h: + * gst-libs/gst/vulkan/gstvkmemory.c: + * gst-libs/gst/vulkan/gstvkmemory.h: + * gst-libs/gst/vulkan/gstvkqueue.c: + * gst-libs/gst/vulkan/gstvkqueue.h: + * gst-libs/gst/vulkan/gstvkutils.c: + * gst-libs/gst/vulkan/gstvkutils.h: + * gst-libs/gst/vulkan/gstvkwindow.c: + * gst-libs/gst/vulkan/gstvkwindow.h: + * gst-libs/gst/vulkan/ios/gstvkdisplay_ios.h: + * gst-libs/gst/vulkan/ios/gstvkdisplay_ios.m: + * gst-libs/gst/vulkan/ios/gstvkios_utils.h: + * gst-libs/gst/vulkan/ios/gstvkwindow_ios.h: + * gst-libs/gst/vulkan/ios/gstvkwindow_ios.m: + * gst-libs/gst/vulkan/meson.build: + * gst-libs/gst/vulkan/vulkan-prelude.h: + * gst-libs/gst/vulkan/vulkan.h: + * gst-libs/gst/vulkan/vulkan_fwd.h: + * gst-libs/gst/vulkan/wayland/gstvkdisplay_wayland.c: + * gst-libs/gst/vulkan/wayland/gstvkdisplay_wayland.h: + * gst-libs/gst/vulkan/wayland/gstvkwindow_wayland.c: + * gst-libs/gst/vulkan/wayland/gstvkwindow_wayland.h: + * gst-libs/gst/vulkan/wayland/wayland_event_source.c: + * gst-libs/gst/vulkan/wayland/wayland_event_source.h: + * gst-libs/gst/vulkan/xcb/gstvkdisplay_xcb.c: + * gst-libs/gst/vulkan/xcb/gstvkdisplay_xcb.h: + * gst-libs/gst/vulkan/xcb/gstvkwindow_xcb.c: + * gst-libs/gst/vulkan/xcb/gstvkwindow_xcb.h: + * gst-libs/gst/vulkan/xcb/xcb_event_source.c: + * gst-libs/gst/vulkan/xcb/xcb_event_source.h: + * pkgconfig/gstreamer-vulkan-uninstalled.pc.in: + * pkgconfig/gstreamer-vulkan.pc.in: + * pkgconfig/meson.build: + vulkan: make a gstvulkan library out of the existing API + +2019-04-08 18:43:50 +1000 Matthew Waters + + * ext/vulkan/vkbufferpool.c: + vkbufferpool: Fix multiplaner allocations + Use the plane width/height and the sizes required by vulkan + Fixes allocation of: + videotestsrc ! video/x-raw,format=I420 ! vulkanupload ! fakesink + +2019-04-08 18:42:12 +1000 Matthew Waters + + * ext/vulkan/vkbuffermemory.c: + * ext/vulkan/vkerror.h: + * ext/vulkan/vkimagememory.c: + vk*memory: explicitly error out for driver NPOT alignment + +2019-04-04 19:30:28 +1100 Matthew Waters + + * ext/vulkan/vkimagememory.c: + vulkan/image: initialize the requirements struct before using it + +2019-04-04 19:27:55 +1100 Matthew Waters + + * ext/vulkan/vkupload.c: + * ext/vulkan/vkupload.h: + * ext/vulkan/vkutils.c: + vulkan: don't require every element to have a display + Only sink elements really care about a valid display + +2019-04-04 18:38:13 +1100 Matthew Waters + + * ext/vulkan/gstvulkan.c: + * ext/vulkan/vkdisplay.c: + * ext/vulkan/vkdisplay.h: + * ext/vulkan/vkwindow.c: + vulkan: remove unused X11 window system references + We use XCB instead + +2019-04-04 17:33:34 +1100 Matthew Waters + + * ext/vulkan/vkdevice.c: + * ext/vulkan/vkinstance.c: + * ext/vulkan/vkutils.c: + * ext/vulkan/vkutils_private.h: + vulkan: remove unused layer enablement + This is possible now via the vulkan loader + +2019-05-20 16:34:55 +0500 Ali Yousuf + + * ext/webrtc/gstwebrtcice.c: + webrtc: Fix log when adding stun server + +2019-06-04 15:35:24 +1000 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + webrtc: fix the location of signalling-state change notification + 1. The spec indicates that the notification should occur near the end of + 'setting the description' processing + 2. The current location with the drop of the lock could cause the 'check + if negotiation is needed' logic to execute and become confused about + the state of the webrtcbin's current local descriptions. + In the bad case, the following assertions could be hit: + g_assert (trans->mline < gst_sdp_message_medias_len (webrtc->current_local_description->sdp)); + g_assert (trans->mline < gst_sdp_message_medias_len (webrtc->current_remote_description->sdp)); + Moving the signalling state change later in the set description task + means that checking for a renegotiation will early abort as the + signalling state is not STABLE before the session description and + transceivers have been updated. + +2019-06-03 20:29:18 -0400 Nicolas Dufresne + + * gst/rtp/Makefile.am: + make: rtp: Remove spurious header file + This header file no longer exist. + +2019-06-03 20:08:23 +0000 Marc Leeman + + * configure.ac: + * gst/meson.build: + * gst/rtp/Makefile.am: + * gst/rtp/gstrtp-utils.c: + * gst/rtp/gstrtp-utils.h: + * gst/rtp/gstrtpsink.c: + * gst/rtp/gstrtpsink.h: + * gst/rtp/gstrtpsrc.c: + * gst/rtp/gstrtpsrc.h: + * gst/rtp/meson.build: + * gst/rtp/plugin.c: + * meson_options.txt: + * tests/check/Makefile.am: + * tests/check/elements/.gitignore: + * tests/check/elements/rtpsink.c: + * tests/check/elements/rtpsrc.c: + * tests/check/meson.build: + rtpmanagerbad: add RTP streaming elements + This is a re-implementation of the RTP elements that are submitted in + 2013 to handle RTP streams. The elements handle a correct connection + for the bi-directional use of the RTCP sockets. + https://bugzilla.gnome.org/show_bug.cgi?id=703111 + The rtpsink and rtpsrc elements add an URI interface so that streams + can be decoded with decodebin using the rtp:// interface. + The code can be used as follows + ``` + gst-launch-1.0 videotestsrc ! x264enc ! rtph264pay config-interval=3 ! rtpsink uri=rtp://239.1.1.1:1234 + gst-launch-1.0 videotestsrc ! x264enc ! rtph264pay config-interval=1 ! rtpsink uri=rtp://239.1.2.3:5000 + gst-launch-1.0 rtpsrc uri=rtp://239.1.2.3:5000?encoding-name=H264 ! rtph264depay ! avdec_h264 ! videoconvert ! xvimagesink + gst-launch-1.0 videotestsrc ! avenc_mpeg4 ! rtpmp4vpay config-interval=1 ! rtpsink uri=rtp://239.1.2.3:5000 + gst-launch-1.0 rtpsrc uri=rtp://239.1.2.3:5000?encoding-name=MP4V-ES ! rtpmp4vdepay ! avdec_mpeg4 ! videoconvert ! xvimagesink + ``` + rtpmanagerbad: add pkg-config + rtpmanagerbad: Rtp should be uppercase + rtpmanagerbad: add G_OS_WIN32 for shielding unix headers + rtpmanagerbad: remove Since from documentation + rtpmanagerbad: rename lib name from nrtp to rtpmanagerbad + rtpmanagerbad: sync meson.build with other modules + rtpmanagerbad: add Makefile.am + rtpmanagerbad: use GstElement to count pads + rtpmanagerbad: use gst_bin_set_suppressed_flags + rtpmanagerbad: check element creation + rtpmanagerbad: post message when trying to access missing rtpbin + rtpmanagerbad: return FALSE with g_return tests + rtpmanagerbad: use gsocket multicast check + rtpmanagerbad: use gst_caps_new_empty_simple iso gst_caps_from_string + rtpmanagerbad: sync with gstrtppayloads.h + rtpmanagerbad: correct media type X-GST + rtpmanagerbad: test if a compatible pad was found + rtpmanagerbad: remove evil copy of GstRTPPayloadInfo + rtpmanagerbad: add gio_dep to meson + rtpmanagerbad: revert to old glib boilerplate + GStreamer 1.16 does not yet support the newer GLib templates, so revert. + rtpmanagerbad: return GST_STATE_CHANGE_NO_PREROLL for live sources + for live sources, NO_PREROLL should be returned for PLAYING->PAUSED and + READY->PAUSED transitions. + rtpmanagerbad: use GstElement pad counting + rtpmanagerbad: just use template name to request pad + rtpmanagerbad: remove commented code + rtpmanagerbad: use funnel to send multiple streams on one socket + rtpmanagerbad: avoid beaches + beaches should only be used during the summer, so rewrite the code to + return explicitly and avoid beaches during the winter. + rtpmanagerbad: add copyright to test code + rtpmanagerbad: g_free is NULL safe + rtpmanagerbad: do not trace rtpbin + rtpmanagerbad: return NULL explitly + rtpmanagerbad: warn when data port is not even + According to RFC 3550, RTP data should be sent on even ports, while RTCP + is sent on the following odd port. + rtpmanagerbad: document port allocation in rtpsink/src + rtpmanagerbad: improve uri description + rtpmanagerbad: add comment re-use socket + rtpmanagerbad: rename gst_object_set_properties_from_uri_query + rtpmanagerbad: loan prop/val setter from rist + rtpmanagerbad: rtpsrc: fix unitialised pointer + rtpmanagerbad: fix silly typo + rtpmanagerbad: test for empty key/value + rtpmanagerbad: rtpsrc: deprecate ssrc collision to INFO + rtpmanagerbad: sync debug with rist + rtpmanagerbad: small strings allocated on stack + rtpmanagerbad: correct rename + rtpmanagerbad: add locking on prop setters/getters + Locking is added because the URI allows to access the properties too. + rtpmanagerbad: allow for RTCP through NAT + rtpmanagerbad: move gio to header file + rtpmanagerbad: free small strings too + rtpmanagerbad: ttl_mc for ttl on dynudpsink + rtpmanagerbad: add comments on the URI registered + rtpmanagerbad: correct macro after file rename + rtpmanagerbad: code style + rtpmanagerbad: handle wrong URIs in setter + rtpmanagerbad: nit URI notation correction + In an URI, the first key/value pair should not have an ampersand, the + parser did not die though. + +2019-05-31 23:06:33 +0200 Niels De Graef + + * configure.ac: + * meson.build: + meson: Bump minimal GLib version to 2.44 + This means we can use some newer features and get rid of some + boilerplate code using the G_DECLARE_* macros. + As discussed on IRC, 2.44 is old enough by now to start depending on it. + +2018-12-11 14:43:21 +0000 Alex Ashley + + * tests/check/elements/dash_mpd.c: + tests/dash_mpd: take account of Period start in expected timestamps + The start of each segment is relative to the Period start, minus + the presentation time offset. + As specified in section 5.3.9.6 of the MPEG DASH specification: + The value of the @t attribute minus the value of the + @presentationTimeOffset specifies the MPD start time of + the first Segment in the series. + Several tests use a Period@start value of 10 seconds, which either + needs to be taken into account when calculating expected timestamps + or have that attribute removed. + This commit uses a mix of updating the timestamps and removing the + start attribute, so that both the case of its presence and absence + is tested. + +2018-10-16 16:57:30 +0100 Alex Ashley + + * ext/dash/gstmpdparser.c: + * tests/check/elements/dash_mpd.c: + dashdemux: include both Period start and presentationTimeOffset in segment start + The start of each segment is relative to the Period start, minus + the presentation time offset. + As specified in section 5.3.9.6 of the MPEG DASH specification: + The value of the @t attribute minus the value of the + @presentationTimeOffset specifies the MPD start time of + the first Segment in the series. + dashdemux was not taking account of presentationTimeOffset and in + some methods was not taking into account the Period start time. + This commit modifies the segment->start value to always be + relative to the MPD start time (zero for VOD, + availabilityStartTime for live streams). This makes all uses of + the segment list consistent. + Fixes #841 + +2019-06-01 01:42:51 +0200 Mathieu Duponchelle + + * docs/libs/audio/index.md: + * docs/libs/audio/sitemap.txt: + * docs/meson.build: + * gst-libs/gst/audio/gstnonstreamaudiodecoder.c: + docs: document gstreamer-bad-audio + And unprefix subproject paths, making a special case for + webrtc, to not conflict with the webrtc plugin + +2019-06-01 01:42:06 +0200 Mathieu Duponchelle + + * gst-libs/gst/audio/meson.build: + libs: build a gir file for gstreamer-bad-audio + +2018-10-02 11:25:14 +0300 Vivia Nikolaidou + + * gst/timecode/gstavwait.c: + avwait: Don't print warnings for every buffer passed + +2019-05-31 14:09:40 +0800 Haihao Xiang + + * sys/msdk/gstmsdksystemmemory.c: + msdk: return a right pointer for VUYA format + The first channel in memory is V for VUYA format, note + GST_VIDEO_FORMAT_VUYA is mapped to MFX_FOURCC_AYUV in this plugin + +2019-05-29 17:05:34 +0100 Tim-Philipp Müller + + * docs/plugins/gst_plugins_cache.json: + docs: update plugin doc cache and add more plugins + +2019-05-29 11:28:00 +0100 Tim-Philipp Müller + + * ext/bs2b/meson.build: + * ext/closedcaption/meson.build: + * ext/colormanagement/meson.build: + * ext/dc1394/meson.build: + * ext/gme/meson.build: + * ext/ladspa/meson.build: + * ext/lv2/meson.build: + * ext/modplug/meson.build: + * ext/musepack/meson.build: + * ext/neon/meson.build: + * ext/ofa/meson.build: + * ext/openal/meson.build: + * ext/openexr/meson.build: + * ext/openmpt/meson.build: + * ext/openni2/meson.build: + * ext/sctp/meson.build: + * ext/sndfile/meson.build: + * ext/srt/meson.build: + * ext/teletextdec/meson.build: + * ext/voamrwbenc/meson.build: + * ext/wildmidi/meson.build: + * ext/wpe/meson.build: + * gst/audiolatency/meson.build: + * sys/androidmedia/meson.build: + * sys/applemedia/meson.build: + * sys/opensles/meson.build: + * sys/tinyalsa/meson.build: + * sys/vdpau/meson.build: + meson: add more plugins to plugins list + Makes sure their path gets added to the uninstalled environment + and makes sure they get included in the docs. + +2019-05-22 21:44:44 +0200 Mathieu Duponchelle + + * gst/mpegtsmux/gstbasetsmux.c: + basetsmux: don't reset pad on flush_stop + This was mistakenly added when porting to aggregator, this + restores the old behaviour, by only resetting them when the + muxer itself is reset + +2019-05-22 21:44:22 +0200 Mathieu Duponchelle + + * gst-libs/gst/mpegts/gstmpegtssection.c: + mpegtssection: events don't necessarily have a structure + +2019-05-22 21:44:02 +0200 Mathieu Duponchelle + + * gst/mpegtsmux/gstbasetsmux.c: + basetsmux: fix send_event by chaining up + +2019-05-29 18:27:09 +0200 Mathieu Duponchelle + + * docs/meson.build: + * gst/mpegtsmux/gstmpegtsmux.c: + mpegtsmux: add SECTION comment + We include an example for injecting sections in the transport + stream in the documentation + +2019-05-29 17:03:59 +0200 Mathieu Duponchelle + + * tests/examples/mpegts/meson.build: + * tests/examples/mpegts/ts-section-writer.c: + tests: add example for injecting MPEG-TS sections + +2019-05-29 17:01:40 +0200 Mathieu Duponchelle + + * gst/mpegtsmux/gstbasetsmux.c: + * gst/mpegtsmux/tsmux/tsmux.c: + basetsmux: preserve user-specified sections across resets + As sections can be provided by the user through send_event + when the element state is NULL, their lifetime is expected + to match that of the muxer, and they must be preserved when + the state changes + +2019-05-23 01:44:19 +0200 Mathieu Duponchelle + + * gst/mpegtsmux/gstatscmux.c: + atscmux: send empty RRT / MGT / STT tables + These are mandated by A/65, their absence gets flagged by + stream analyzers. Users can of course provide filled up + versions through the send_event API. + +2019-05-23 00:03:18 +0200 Mathieu Duponchelle + + * gst/mpegtsmux/tsmux/tsmux.c: + * gst/mpegtsmux/tsmux/tsmux.h: + * gst/mpegtsmux/tsmux/tsmuxcommon.h: + tsmux: maintain packet counters in a global array + We can have multiple TsMuxPacketInfo objects for the same PID + with user-provided sections, for example ATSC requires multiple + tables with the same PID. + +2019-05-21 02:53:20 +0200 Mathieu Duponchelle + + * gst-libs/gst/mpegts/gst-atsc-section.c: + * gst-libs/gst/mpegts/gst-atsc-section.h: + * gst-libs/gst/mpegts/gstmpegtssection.c: + * gst-libs/gst/mpegts/gstmpegtssection.h: + mpegts: extend support for ATSC tables + Adds constructors for the following sections: + STT: System Time Table + MGT: Master Guide Table + RRT: Rating Region Table + Also adds parsing code for RRT + +2019-05-25 00:02:05 +1000 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + webrtc: only set sctp ports if they are different + SCTPassociation will complain if we do that while running and resetting + is not something we support at the moment + +2019-03-08 00:39:59 +1100 Matthew Waters + + * tests/check/elements/webrtcbin.c: + tests/webrtc: wait until the SDP has been set before continuing + If we renegotiate, then it is currently possible for an added stream to + be added to webrtcbin before the SDP is complete. This causes an + internal inconsistency as there is a 'pending sink transceiver' without + a corresponding media section in the sdp. It also does not have an + associated transport stream and will fail in _connect_input_stream(). + +2019-03-08 00:37:39 +1100 Matthew Waters + + * ext/webrtc/webrtcdatachannel.h: + * tests/check/elements/webrtcbin.c: + tests/webrtc: fix racy test with a prenegotiated data channel + If both data channels become ready simultaneously, then the two integer + read-add-update cycles can execute concurrently and only ever increment + once instead of the required twice. Use an atomic add instead. + +2019-03-08 00:32:53 +1100 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/webrtcdatachannel.c: + webrtc/dc: move some code from webrtcbin into the datachannel + +2019-03-04 21:44:33 +1100 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + webrtc: hold onto any unknown ICE candidates until the next SDP set + It is very possible for badly behaving signalling or peers to send + us ICE candidates before we receive an SDP. While we had consideration + for that on the first set SDP, subsequent SDP's could result in + misconfigured ICE transports. Expand the previous code to also take + into account reconfigurations. + +2018-11-28 17:23:31 +1100 Matthew Waters + + * .gitignore: + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/gstwebrtcbin.h: + * ext/webrtc/transportstream.c: + * ext/webrtc/transportstream.h: + * ext/webrtc/utils.c: + * ext/webrtc/utils.h: + * ext/webrtc/webrtcsdp.c: + * ext/webrtc/webrtcsdp.h: + * ext/webrtc/webrtctransceiver.c: + * ext/webrtc/webrtctransceiver.h: + * gst-libs/gst/webrtc/rtptransceiver.c: + * tests/check/elements/webrtcbin.c: + * tests/examples/webrtc/Makefile.am: + * tests/examples/webrtc/meson.build: + * tests/examples/webrtc/webrtcrenego.c: + webrtc: Initial support for stream addition/removal + Limitations: + - No transport changes at all (ICE, DTLS) + - Codec changes are untested and probably don't work + - Stream removal doesn't remove transports (i.e. non-bundled transports + will stay around until webrtcbin is shutdown) + - Unified Plan SDP only. No Plan-B support. + +2018-12-05 18:36:27 +1100 Matthew Waters + + * tests/check/elements/webrtcbin.c: + tests/webrtc: a couple of debug/error string fixes + +2018-12-04 22:49:05 +1100 Matthew Waters + + * tests/check/elements/webrtcbin.c: + tests/webrtc: rewrite bundle checks for separate validate_sdp passes + Improves reusability + +2018-12-04 20:38:19 +1100 Matthew Waters + + * tests/check/elements/webrtcbin.c: + tests/webrtc: add helper for getting the offer/answer element + +2018-12-04 20:32:56 +1100 Matthew Waters + + * tests/check/elements/webrtcbin.c: + tests/webrtc: only check audio/video for direction attributes + +2018-12-06 23:28:18 +1100 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: expose the transceiver as a pad property + +2018-12-06 23:25:54 +1100 Matthew Waters + + * ext/webrtc/webrtctransceiver.c: + * gst-libs/gst/webrtc/rtptransceiver.c: + * gst-libs/gst/webrtc/rtptransceiver.h: + webrtc/transceiver: add a set_direction function + Matches the setDirection() from the W3C spec and allows changing the + transceiver direction at the next negotiation cycle. + +2018-12-05 19:17:45 +1100 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + webrtc: track and log more rtpbin state + like bye's timeouts, validation, activation, etc + +2018-12-06 16:59:52 +1100 Matthew Waters + + * ext/webrtc/webrtcsdp.c: + webrtc: add support for intersecting inactive transceiver directions + +2018-12-04 20:30:49 +1100 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + webrtc: mark remote/local-description as readonly + +2018-11-27 19:27:27 +1100 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + webrtc: don't reuse stopped transceivers at all + +2018-11-27 19:25:51 +1100 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + webrtc: also check for a null mid to signify an unassociated transceiver + We always give our transceivers an mline on creation so that check is + not useful by itself + +2018-11-27 19:24:40 +1100 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + webrtc: only check sink pads for a 'sink pads have caps' check + +2018-11-26 22:10:57 +1100 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + * tests/check/elements/webrtcbin.c: + webrtc: fix answer creation with multiple streams and similar caps + +2018-11-26 20:41:29 +1100 Matthew Waters + + * tests/check/elements/webrtcbin.c: + tests/webrtc: factor out sdp validation into a single function + +2018-11-26 19:54:18 +1100 Matthew Waters + + * tests/check/elements/webrtcbin.c: + tests/webrtc: validate number of sdp media using validate_sdp + +2018-11-26 19:48:31 +1100 Matthew Waters + + * tests/check/elements/webrtcbin.c: + tests/webrtc: allow multiple validation functions + +2018-11-26 19:19:04 +1100 Matthew Waters + + * tests/check/elements/webrtcbin.c: + tests/webrtc: test that duplicate negotiations succeed + +2019-05-28 16:58:20 +0100 Philippe Normand + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Expose current and pending local/remote description properties + They are already handled in the property getter and setter functions but were + not formally declared in the GObject class. + +2019-05-29 22:58:08 +0200 Mathieu Duponchelle + + * ext/aom/gstav1dec.c: + * ext/aom/gstav1enc.c: + * ext/closedcaption/sliced.h: + * ext/colormanagement/gstlcms.c: + * ext/curl/gstcurlhttpsrc.c: + * ext/modplug/gstmodplug.cc: + * ext/mpeg2enc/gstmpeg2enc.cc: + * ext/mplex/gstmplex.cc: + * ext/opencv/gstcameracalibrate.cpp: + * ext/opencv/gstcameraundistort.cpp: + * ext/opencv/gstcvdilate.cpp: + * ext/opencv/gstcvequalizehist.cpp: + * ext/opencv/gstcverode.cpp: + * ext/opencv/gstcvlaplace.cpp: + * ext/opencv/gstcvsmooth.cpp: + * ext/opencv/gstcvsobel.cpp: + * ext/opencv/gstdewarp.cpp: + * ext/opencv/gstdisparity.cpp: + * ext/opencv/gstedgedetect.cpp: + * ext/opencv/gstfaceblur.cpp: + * ext/opencv/gstfacedetect.cpp: + * ext/opencv/gstgrabcut.cpp: + * ext/opencv/gsthanddetect.cpp: + * ext/opencv/gstmotioncells.cpp: + * ext/opencv/gstretinex.cpp: + * ext/opencv/gstsegmentation.cpp: + * ext/opencv/gstskindetect.cpp: + * ext/opencv/gsttemplatematch.cpp: + * ext/opencv/gsttextoverlay.cpp: + * ext/openmpt/gstopenmptdec.c: + * ext/openni2/gstopenni2.cpp: + * ext/openni2/gstopenni2src.cpp: + * ext/srt/gstsrtsink.c: + * ext/srt/gstsrtsrc.c: + * ext/wildmidi/gstwildmididec.c: + * gst-libs/gst/audio/gstnonstreamaudiodecoder.c: + * gst-libs/gst/audio/gstnonstreamaudiodecoder.h: + * gst-libs/gst/basecamerabinsrc/gstbasecamerasrc.c: + * gst-libs/gst/interfaces/photography.c: + * gst-libs/gst/interfaces/photography.h: + * gst/faceoverlay/gstfaceoverlay.c: + * gst/festival/gstfestival.c: + * sys/applemedia/avfassetsrc.m: + * sys/applemedia/iosassetsrc.m: + * sys/vdpau/mpeg/gstvdpmpegdec.c: + * sys/vdpau/mpeg4/gstvdpmpeg4dec.c: + doc: remove xml from comments + +2019-05-29 18:33:02 +0000 Adam Duskett + + * ext/hls/meson.build: + ext/hls/meson.build: fix dependency logic + Currently, if one was to set -Dhls-crypto to either libgcrypt or openssl + instead of auto, the following lines would fail because hls_crypto_dep is not + yet set: + if not hls_crypto_dep.found() and ['auto', 'libgcrypt'].contains(hls_crypto) + if not hls_crypto_dep.found() and ['auto', 'openssl'].contains(hls_crypto) + Instead, change "if not hls_crypto_dep.found()" to "if not have_hls_crypto" + which fixes the error. + +2019-05-29 12:48:06 +0100 Tim-Philipp Müller + + * docs/plugins/gst_plugins_cache.json: + docs: remove stale plugins from docs plugin cache + gtk plugin has moved to -good, schroedinger has been removed. + +2019-05-23 20:24:40 -0400 Nicolas Dufresne + + * ext/wayland/wlwindow.c: + waylandsink: Workaround gnome-shell bug + Use a timeout to limit that amount of time we wait after the compositor + for the initial configure event. Compositor are support to emit a + configure event before any wl_buffer can be attached. The problem is + that Weston strongly enforce this, while gnome-shell simply does not + emit such an event. + +2019-05-26 12:13:48 +0200 Nicolas Dufresne + + * sys/kms/gstkmsallocator.c: + * sys/kms/gstkmssink.c: + kmssink: Fixup all errno tracing + All DRM ioctl uses errno to report the error and simply returns -1 + when some error occured. This patch fixes all usage of the return + value instead of errno to trace the error type and moves to g_strerror + instead of string.h strerror in order to be consistent with the rest + of GStreamer. + +2019-05-25 19:48:25 +0200 Mathieu Duponchelle + + * docs/plugins/gst_plugins_cache.json: + doc: update plugin cache + +2019-05-25 17:35:26 +0200 Nicolas Dufresne + + * docs/plugins/gst_plugins_cache.json: + docs: Updated plugins cache file + This was done so that the duplicated rist element would go way. + +2019-05-25 16:57:57 +0200 Mathieu Duponchelle + + * gst/autoconvert/gstautoconvert.c: + * gst/camerabin2/gstcamerabin2.c: + * gst/videosignal/gstsimplevideomark.c: + doc: fix element section documentations + Element sections were not rendered anymore after the hotdoc + port, fixing this revealed a few incorrect links. + +2014-11-15 22:58:49 +0000 Tim-Philipp Müller + + * gst-libs/gst/codecparsers/gsth264parser.c: + * gst-libs/gst/codecparsers/gsth265parser.c: + * gst-libs/gst/codecparsers/gstmpegvideoparser.c: + * gst-libs/gst/codecparsers/gstvp8parser.c: + codecparsers: fix debug category initialisation + Make thread-safe. + +2019-05-20 16:15:08 +0300 Sebastian Dröge + + * gst/timecode/gstavwait.c: + avwait: Protect properties and some other code with the mutex + These variables are all accessed from multiple threads. + Also fix some minor leaks in error code paths. + +2019-05-20 15:45:50 +0300 Sebastian Dröge + + * gst/timecode/gstavwait.c: + avwait: Insert some empty lines to give the code some space to breath + +2019-05-20 15:30:28 +0300 Sebastian Dröge + + * gst/timecode/gstavwait.c: + avwait: Allow setting start timecode after end timecode and the other way around + This might be necessary temporarily for changing the previous settings. + Make it an actual error if the settings are like this while processing a + buffer. + +2018-10-18 13:35:04 +0800 Haihua Hu + + * ext/wayland/wlbuffer.c: + wayland/wlbuffer: just return if used_by_compositor is true when attach + When buffer is used by compositor, we don't need attach it and hold one + more reference. Just check used_by_compositor, just return if it is true. + Assert error log is not need, this is normal behavior. + +2019-05-21 16:17:40 +0300 Sebastian Dröge + + * gst/proxy/gstproxysink.c: + * gst/proxy/gstproxysrc.c: + proxy: Forward queries/events sent directly to the element correctly + +2019-05-21 16:03:21 +0300 Sebastian Dröge + + * gst/proxy/gstproxysink.c: + * gst/proxy/gstproxysrc.c: + proxy: Set SOURCE flag on the source and SINK flag on the sink + So that they are properly recognized as such. + +2019-05-22 12:25:38 +0800 Haihao Xiang + + * gst/ivfparse/gstivfparse.c: + ivfparse: Check the data size against IVF_FRAME_HEADER_SIZE + It is parsing frame data and so should check the data size against the + frame header size instead of the file header size. If don't, it is + possible to drop the last frame because IVF_FILE_HEADER_SIZE is greater + than IVF_FRAME_HEADER_SIZE + +2019-05-14 17:04:41 -0400 Nicolas Dufresne + + * docs/plugins/gst_plugins_cache.json: + doc: Add rist plugin to hotdoc + +2019-05-07 15:58:04 -0400 Nicolas Dufresne + + * gst/rist/Makefile.am: + * gst/rist/gstristplugin.c: + * gst/rist/gstristsink.c: + * gst/rist/gstroundrobin.c: + * gst/rist/gstroundrobin.h: + * gst/rist/meson.build: + rist: Add combined bonding-method support + This patchs add support for configuring the bonding method used. There is + two method specified + - redundant: All the RTP packets are replicated + - combined: RTP packet are evenly distributed over each links + Additionally, an application can set the "dispatcher" property in order + to implement custom dispatching method. Whenever the "dispatcher" + property is set, "bonding-method" property will be ignored. + +2019-05-07 11:32:00 -0400 Nicolas Dufresne + + * gst/rist/gstristsrc.c: + ristsrc: Implement per session stats + As we can now have multiple sessions, stats need to be implemented per + session. This follow RTPSession model with sources. The stats are now: + dropped: 0 + received: 0 + recovered: 0 + permanently-lost: 0 + duplicates: 0 + retransmission-requests-sent: 0 + rtx-roundtrip-time: 0 + session-stats: + session-id=0 + rtp-from="" + rtcp-from="" + dropped=0 + received=0 + session-id=1 + rtp-from="" + rtcp-from="" + dropped=0 + received=0 + . . . + session-stats is a GValueArray as there is no better alternatives. + +2019-05-03 22:28:56 -0400 Nicolas Dufresne + + * gst/rist/gstristsrc.c: + ristsrc: Cleanup unused include + +2019-05-03 17:44:14 -0400 Nicolas Dufresne + + * gst/rist/gstristsink.c: + ristsink: Implement per session stats + As we can now have multiple sessions, stats need to be implemented per + session. This follow RTPSession model with sources. The stats are now: + sent-original-packets: 0 + sent-retransmitted-packets: 0 + session-stats: + session-id=0 + sent-original-packets=0 + sent-retransmitted-packets=0 + round-trip-time=0 + session-id=1 + sent-original-packets=0 + sent-retransmitted-packets=0 + round-trip-time=0 + . . . + session-stats is a GValueArray as there is no better alternatives. + +2019-05-03 16:52:02 -0400 Nicolas Dufresne + + * gst/rist/gstristsrc.c: + ristsrc: rtxbin may be null in finalize + +2019-02-28 17:21:25 -0500 Nicolas Dufresne + + * gst/rist/gstristsrc.c: + ristsrc: Add bonding support + This add support for receiving and aggregating the same stream + over multiple addresses. + +2019-02-15 17:13:02 -0500 Nicolas Dufresne + + * gst/rist/gstristsink.c: + ristsink: Implement bonding support + +2019-05-21 18:49:02 +0000 Marc Leeman + + * gst/rist/gstristsink.c: + * gst/rist/gstristsrc.c: + rist: spell and grammar corrects in top comments + +2019-05-20 10:26:14 -0400 Thibault Saunier + + * docs/plugins/gst_plugins_cache.json: + * gst/rist/gstristsink.c: + * gst/rist/gstristsrc.c: + docs: Update cache and mark some rist prop as 'show-default' + +2019-05-20 10:16:02 -0400 Thibault Saunier + + * gst/proxy/meson.build: + doc: Add proxysink/proxysrc + +2019-05-21 12:15:55 +0300 Sebastian Dröge + + * gst-libs/gst/webrtc/webrtc_fwd.h: + webrtc: Add various Since markers to new types after 1.14.0 + +2019-05-20 19:33:27 +0900 Seungha Yang + + * gst/mpegtsmux/gstmpegtsmux.c: + mpegtsmux: Fix build warning error + gstmpegtsmux.c:291:3: error: implicit declaration of function ‘memmove’ [-Werror=implicit-function-declaration] + memmove (map.data + 4, map.data, map.size - 4); + ^ + gstmpegtsmux.c:291:3: error: incompatible implicit declaration of built-in function ‘memmove’ [-Werror] + gstmpegtsmux.c:291:3: note: include ‘’ or provide a declaration of ‘memmove’ + +2019-05-17 01:21:53 +0200 Mathieu Duponchelle + + * gst/mpegtsmux/gstbasetsmux.c: + basetsmux: improve bitrate property documentation + +2019-05-15 01:35:04 +0200 Mathieu Duponchelle + + * gst/mpegtsmux/tsmux/tsmux.c: + * gst/mpegtsmux/tsmux/tsmux.h: + tsmux: refactor logic for when to (re)transmit tables + In order to output them at regular intervals in the bitstream + when a bitrate is specified. + +2019-05-15 01:34:51 +0200 Mathieu Duponchelle + + * gst/mpegtsmux/gstbasetsmux.c: + basetsmux: fix PCR stream selection + +2019-05-10 01:33:17 +1000 Jan Schmidt + + * gst/mpegtsmux/Makefile.am: + Fix compile after aggregator rewrite and base class refactor + +2019-05-08 16:56:29 +0200 Mathieu Duponchelle + + * gst/mpegtsmux/tsmux/tsmux.c: + tsmux: fix continuity counter for packets with no payload + +2019-05-01 01:09:19 +0200 Mathieu Duponchelle + + * gst/mpegtsmux/gstatscmux.c: + * 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/tsmux/tsmux.c: + * tests/check/elements/mpegtsmux.c: + mpegtsmux: aggregator port + +2019-04-30 01:42:59 +0200 Mathieu Duponchelle + + * 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/meson.build: + * gst/mpegtsmux/tsmux/tsmux.c: + * gst/mpegtsmux/tsmux/tsmuxcommon.h: + * gst/mpegtsmux/tsmux/tsmuxstream.c: + mpegtsmux: spring cleanup, no functional change + +2019-04-30 00:50:06 +0200 Mathieu Duponchelle + + * gst/mpegtsmux/basetsmux.c: + * gst/mpegtsmux/basetsmux.h: + * gst/mpegtsmux/mpegtsmux.c: + * gst/mpegtsmux/mpegtsmux.h: + basetsmux: extract m2ts-mode to mpegtsmux + +2019-04-26 20:26:55 +0200 Mathieu Duponchelle + + * gst/mpegtsmux/atscmux.c: + * gst/mpegtsmux/atscmux.h: + * gst/mpegtsmux/basetsmux.c: + * gst/mpegtsmux/basetsmux.h: + * gst/mpegtsmux/basetsmux_aac.c: + * gst/mpegtsmux/basetsmux_aac.h: + * gst/mpegtsmux/basetsmux_jpeg2000.c: + * gst/mpegtsmux/basetsmux_jpeg2000.h: + * gst/mpegtsmux/basetsmux_opus.c: + * gst/mpegtsmux/basetsmux_opus.h: + * gst/mpegtsmux/basetsmux_ttxt.c: + * gst/mpegtsmux/basetsmux_ttxt.h: + * gst/mpegtsmux/meson.build: + * gst/mpegtsmux/mpegtsmux.c: + * gst/mpegtsmux/mpegtsmux.h: + * gst/mpegtsmux/tsmux/tsmux.c: + * gst/mpegtsmux/tsmux/tsmuxcommon.h: + * gst/mpegtsmux/tsmux/tsmuxstream.c: + mpegtsmux: extract an actual base class + +2019-04-26 00:01:31 +0200 Mathieu Duponchelle + + * gst/mpegtsmux/atscmux.c: + * gst/mpegtsmux/mpegtsmux.c: + * gst/mpegtsmux/mpegtsmux.h: + * gst/mpegtsmux/tsmux/tsmux.c: + * gst/mpegtsmux/tsmux/tsmux.h: + * gst/mpegtsmux/tsmux/tsmuxstream.c: + * gst/mpegtsmux/tsmux/tsmuxstream.h: + mpegtsmux: expose the vmethods necessary for ATSC E-AC-3 handling + +2019-04-25 20:23:03 +0200 Mathieu Duponchelle + + * gst/mpegtsmux/atscmux.c: + * gst/mpegtsmux/mpegtsmux.c: + * gst/mpegtsmux/mpegtsmux.h: + * gst/mpegtsmux/tsmux/tsmux.c: + * gst/mpegtsmux/tsmux/tsmux.h: + mpegtsmux: provide API for subclasses to override stream creation + +2019-04-25 18:26:27 +0200 Mathieu Duponchelle + + * gst/mpegtsmux/atscmux.c: + * gst/mpegtsmux/atscmux.h: + * gst/mpegtsmux/meson.build: + * gst/mpegtsmux/mpegtsmux.c: + * gst/mpegtsmux/mpegtsmuxplugin.c: + mpegtsmux: add an ATSC subclass + +2019-04-22 22:50:07 +0200 Mathieu Duponchelle + + * gst/mpegtsmux/tsmux/tsmux.c: + tsmux: Calculate PCR from number of bytes written in CBR mode + +2019-04-22 22:11:29 +0200 Mathieu Duponchelle + + * gst/mpegtsmux/mpegtsmux.c: + * gst/mpegtsmux/mpegtsmux.h: + * 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: Expose bitrate property + This allows outputting a Transport Stream with a constant bitrate, + by inserting null packets. + +2019-04-22 22:10:42 +0200 Mathieu Duponchelle + + * gst/mpegtsmux/tsmux/tsmux.c: + * gst/mpegtsmux/tsmux/tsmuxstream.c: + * gst/mpegtsmux/tsmux/tsmuxstream.h: + tsmux: actually respect the PCR frequency we target + +2019-04-22 18:23:39 +0200 Mathieu Duponchelle + + * gst/mpegtsmux/tsmux/tsmux.c: + * gst/mpegtsmux/tsmux/tsmuxstream.c: + * gst/mpegtsmux/tsmux/tsmuxstream.h: + tsmux: Use DTS over PTS + +2019-05-18 12:09:18 +0100 Philippe Normand + + * ext/aom/meson.build: + meson: Keep track of the aom plugin + Otherwise it doesn't appear in the GstPluginsPath.json and thus is not listed in + gst-build's uninstalled shell's $GST_PLUGIN_PATH. + +2019-05-16 13:08:19 +0900 Seungha Yang + + * docs/plugins/gst_plugins_cache.json: + docs: Update plugins cache for nvdec/nvenc + +2019-05-15 11:25:37 +0900 Seungha Yang + + * sys/nvdec/meson.build: + * sys/nvenc/meson.build: + meson: Add nvenc and nvdec to plugin list when available + +2019-05-17 17:15:13 -0400 Olivier Crête + + * gst/rist/gstristsink.c: + * gst/rist/gstristsrc.c: + rist: Fix typo + +2019-05-17 15:28:54 +0200 Niels De Graef + + * ext/webrtc/gstwebrtcbin.c: + webrtc: Fix some signals' GIR annotations + This will lead to wrong bindings otherwise (and creates more correct + expectations for developers). + +2019-05-16 15:35:58 -0400 Thibault Saunier + + * docs/plugins/gst_plugins_cache.json: + docs: Add infos about windows specific plugins + +2019-05-16 09:18:53 -0400 Thibault Saunier + + * docs/meson.build: + * docs/plugins/gst_plugins_cache.json: + docs: Stop building the doc cache by default + And update the cache + Fixes https://gitlab.freedesktop.org/gstreamer/gst-docs/issues/36 + +2019-05-15 16:18:01 -0400 Thibault Saunier + + * gst/rist/meson.build: + docs: Add gstrist to the documentation + +2019-04-26 08:40:28 +0800 Haihao Xiang + + * sys/msdk/gstmsdk.c: + msdk: fix the typo for gst_msdkvp9dec_debug + +2019-05-14 19:19:46 +0100 Tim-Philipp Müller + + * autogen.sh: + * configure.ac: + configure: fix autotools build after gtk-doc removal + Were using a gtk-doc specific file to check if we can + find the srcdir, so configure would fail. + +2019-05-14 10:45:21 -0400 Thibault Saunier + + * docs/plugins/gst_plugins_cache.json: + * gst/frei0r/gstfrei0r.c: + docs: Make sure frei0r plugins properties default are stable + frei0r returns 'random' values as default and it makes the cache + often change for no good reason + +2019-05-14 10:28:17 -0400 Thibault Saunier + + * docs/plugins/gst_plugins_cache.json: + docs: Remove stereo and openglmixer from the cache + Thus were moved, respectively, to -good and -base + +2019-05-14 07:36:15 +0000 Jose Antonio Santos Cadenas + + * ext/dtls/gstdtlsagent.c: + dtlsagent: Do not overwrite openssl locking callbacks + +2019-05-13 22:56:47 -0400 Thibault Saunier + + * docs/plugins/gst_plugins_cache.json: + docs: Update plugins documentation cache + +2018-10-22 11:30:45 +0200 Thibault Saunier + + * .gitignore: + * Makefile.am: + * configure.ac: + * docs/Makefile.am: + * docs/gst_api_version.in: + * docs/index.md: + * docs/libs/.gitignore: + * docs/libs/Makefile.am: + * docs/libs/adaptivedemux/index.md: + * docs/libs/adaptivedemux/sitemap.txt: + * docs/libs/base/index.md: + * docs/libs/base/sitemap.txt: + * docs/libs/codecparsers/index.md: + * docs/libs/codecparsers/sitemap.txt: + * docs/libs/compiling.sgml: + * docs/libs/gst-plugins-bad-libs-docs.sgml: + * docs/libs/gst-plugins-bad-libs.types: + * docs/libs/insertbin/index.md: + * docs/libs/insertbin/sitemap.txt: + * docs/libs/mpegts/index.md: + * docs/libs/mpegts/sitemap.txt: + * docs/libs/player/index.md: + * docs/libs/player/sitemap.txt: + * docs/libs/tools/index.md: + * docs/libs/tools/sitemap.txt: + * docs/libs/video/index.md: + * docs/libs/video/sitemap.txt: + * docs/libs/webrtc/index.md: + * docs/libs/webrtc/sitemap.txt: + * docs/meson.build: + * docs/plugins/.gitignore: + * docs/plugins/Makefile.am: + * docs/plugins/camerabin.dot: + * docs/plugins/camerabin.png: + * docs/plugins/gst-plugins-bad-plugins-docs.sgml: + * docs/plugins/gst-plugins-bad-plugins-overrides.txt: + * docs/plugins/gst-plugins-bad-plugins-sections.txt: + * docs/plugins/gst-plugins-bad-plugins.args: + * docs/plugins/gst-plugins-bad-plugins.hierarchy: + * docs/plugins/gst-plugins-bad-plugins.interfaces: + * docs/plugins/gst-plugins-bad-plugins.prerequisites: + * docs/plugins/gst-plugins-bad-plugins.signals: + * docs/plugins/gst-plugins-bad-plugins.types: + * docs/plugins/gst_plugins_cache.json: + * docs/plugins/index.md: + * docs/plugins/inspect/plugin-accurip.xml: + * docs/plugins/inspect/plugin-adpcmdec.xml: + * docs/plugins/inspect/plugin-adpcmenc.xml: + * docs/plugins/inspect/plugin-aiff.xml: + * docs/plugins/inspect/plugin-asfmux.xml: + * docs/plugins/inspect/plugin-assrender.xml: + * docs/plugins/inspect/plugin-audiobuffersplit.xml: + * docs/plugins/inspect/plugin-audiofxbad.xml: + * docs/plugins/inspect/plugin-audiolatency.xml: + * docs/plugins/inspect/plugin-audiomixmatrix.xml: + * docs/plugins/inspect/plugin-audiovisualizers.xml: + * docs/plugins/inspect/plugin-autoconvert.xml: + * docs/plugins/inspect/plugin-bayer.xml: + * docs/plugins/inspect/plugin-bluez.xml: + * docs/plugins/inspect/plugin-bs2b.xml: + * docs/plugins/inspect/plugin-bz2.xml: + * docs/plugins/inspect/plugin-camerabin.xml: + * docs/plugins/inspect/plugin-chromaprint.xml: + * docs/plugins/inspect/plugin-closedcaption.xml: + * docs/plugins/inspect/plugin-coloreffects.xml: + * docs/plugins/inspect/plugin-colormanagement.xml: + * docs/plugins/inspect/plugin-curl.xml: + * docs/plugins/inspect/plugin-dashdemux.xml: + * docs/plugins/inspect/plugin-dc1394.xml: + * docs/plugins/inspect/plugin-de265.xml: + * docs/plugins/inspect/plugin-debugutilsbad.xml: + * docs/plugins/inspect/plugin-decklink.xml: + * docs/plugins/inspect/plugin-dfbvideosink.xml: + * docs/plugins/inspect/plugin-dtls.xml: + * docs/plugins/inspect/plugin-dtsdec.xml: + * docs/plugins/inspect/plugin-dvb.xml: + * docs/plugins/inspect/plugin-dvbsuboverlay.xml: + * docs/plugins/inspect/plugin-dvdspu.xml: + * docs/plugins/inspect/plugin-faac.xml: + * docs/plugins/inspect/plugin-faad.xml: + * docs/plugins/inspect/plugin-faceoverlay.xml: + * docs/plugins/inspect/plugin-fbdevsink.xml: + * docs/plugins/inspect/plugin-fdkaac.xml: + * docs/plugins/inspect/plugin-festival.xml: + * docs/plugins/inspect/plugin-fieldanalysis.xml: + * docs/plugins/inspect/plugin-flite.xml: + * docs/plugins/inspect/plugin-fluidsynthmidi.xml: + * docs/plugins/inspect/plugin-freeverb.xml: + * docs/plugins/inspect/plugin-frei0r.xml: + * docs/plugins/inspect/plugin-gaudieffects.xml: + * docs/plugins/inspect/plugin-gdp.xml: + * docs/plugins/inspect/plugin-geometrictransform.xml: + * docs/plugins/inspect/plugin-gme.xml: + * docs/plugins/inspect/plugin-gmedec.xml: + * docs/plugins/inspect/plugin-gsm.xml: + * docs/plugins/inspect/plugin-hls.xml: + * docs/plugins/inspect/plugin-id3tag.xml: + * docs/plugins/inspect/plugin-inter.xml: + * docs/plugins/inspect/plugin-interlace.xml: + * docs/plugins/inspect/plugin-ipcpipeline.xml: + * docs/plugins/inspect/plugin-ivfparse.xml: + * docs/plugins/inspect/plugin-ivtc.xml: + * docs/plugins/inspect/plugin-jp2kdecimator.xml: + * docs/plugins/inspect/plugin-jpegformat.xml: + * docs/plugins/inspect/plugin-kate.xml: + * docs/plugins/inspect/plugin-kms.xml: + * docs/plugins/inspect/plugin-ladspa.xml: + * docs/plugins/inspect/plugin-legacyrawparse.xml: + * docs/plugins/inspect/plugin-midi.xml: + * docs/plugins/inspect/plugin-mms.xml: + * docs/plugins/inspect/plugin-modplug.xml: + * docs/plugins/inspect/plugin-mpeg2enc.xml: + * docs/plugins/inspect/plugin-mpegpsdemux.xml: + * docs/plugins/inspect/plugin-mpegpsmux.xml: + * docs/plugins/inspect/plugin-mpegtsdemux.xml: + * docs/plugins/inspect/plugin-mpegtsmux.xml: + * docs/plugins/inspect/plugin-mplex.xml: + * docs/plugins/inspect/plugin-musepack.xml: + * docs/plugins/inspect/plugin-mxf.xml: + * docs/plugins/inspect/plugin-neon.xml: + * docs/plugins/inspect/plugin-neonhttpsrc.xml: + * docs/plugins/inspect/plugin-netsim.xml: + * docs/plugins/inspect/plugin-ofa.xml: + * docs/plugins/inspect/plugin-openal.xml: + * docs/plugins/inspect/plugin-opencv.xml: + * docs/plugins/inspect/plugin-openexr.xml: + * docs/plugins/inspect/plugin-openh264.xml: + * docs/plugins/inspect/plugin-openjpeg.xml: + * docs/plugins/inspect/plugin-openmpt.xml: + * docs/plugins/inspect/plugin-openni2.xml: + * docs/plugins/inspect/plugin-opusparse.xml: + * docs/plugins/inspect/plugin-pcapparse.xml: + * docs/plugins/inspect/plugin-pnm.xml: + * docs/plugins/inspect/plugin-proxy.xml: + * docs/plugins/inspect/plugin-removesilence.xml: + * docs/plugins/inspect/plugin-resindvd.xml: + * docs/plugins/inspect/plugin-rfbsrc.xml: + * docs/plugins/inspect/plugin-rsvg.xml: + * docs/plugins/inspect/plugin-rtmp.xml: + * docs/plugins/inspect/plugin-rtponvif.xml: + * docs/plugins/inspect/plugin-sbc.xml: + * docs/plugins/inspect/plugin-sdpelem.xml: + * docs/plugins/inspect/plugin-segmentclip.xml: + * docs/plugins/inspect/plugin-shm.xml: + * docs/plugins/inspect/plugin-siren.xml: + * docs/plugins/inspect/plugin-smooth.xml: + * docs/plugins/inspect/plugin-smoothstreaming.xml: + * docs/plugins/inspect/plugin-sndfile.xml: + * docs/plugins/inspect/plugin-soundtouch.xml: + * docs/plugins/inspect/plugin-spandsp.xml: + * docs/plugins/inspect/plugin-speed.xml: + * docs/plugins/inspect/plugin-srt.xml: + * docs/plugins/inspect/plugin-srtp.xml: + * docs/plugins/inspect/plugin-subenc.xml: + * docs/plugins/inspect/plugin-teletext.xml: + * docs/plugins/inspect/plugin-timecode.xml: + * docs/plugins/inspect/plugin-ttmlsubs.xml: + * docs/plugins/inspect/plugin-uvch264.xml: + * docs/plugins/inspect/plugin-vdpau.xml: + * docs/plugins/inspect/plugin-videofiltersbad.xml: + * docs/plugins/inspect/plugin-videoframe_audiolevel.xml: + * docs/plugins/inspect/plugin-videoparsersbad.xml: + * docs/plugins/inspect/plugin-videosignal.xml: + * docs/plugins/inspect/plugin-vmnc.xml: + * docs/plugins/inspect/plugin-voaacenc.xml: + * docs/plugins/inspect/plugin-voamrwbenc.xml: + * docs/plugins/inspect/plugin-vulkan.xml: + * docs/plugins/inspect/plugin-wasapi.xml: + * docs/plugins/inspect/plugin-waylandsink.xml: + * docs/plugins/inspect/plugin-webp.xml: + * docs/plugins/inspect/plugin-webrtc.xml: + * docs/plugins/inspect/plugin-webrtcdsp.xml: + * docs/plugins/inspect/plugin-wildmidi.xml: + * docs/plugins/inspect/plugin-x265.xml: + * docs/plugins/inspect/plugin-y4mdec.xml: + * docs/plugins/inspect/plugin-yadif.xml: + * docs/plugins/inspect/plugin-zbar.xml: + * docs/plugins/sitemap.txt: + * docs/sitemap.txt: + * docs/version.entities.in: + * ext/assrender/meson.build: + * ext/bz2/meson.build: + * ext/chromaprint/meson.build: + * ext/curl/meson.build: + * ext/dash/meson.build: + * ext/directfb/meson.build: + * ext/dtls/meson.build: + * ext/dts/meson.build: + * ext/faac/meson.build: + * ext/faad/meson.build: + * ext/fdkaac/meson.build: + * ext/flite/meson.build: + * ext/fluidsynth/meson.build: + * ext/gsm/meson.build: + * ext/hls/meson.build: + * ext/iqa/meson.build: + * ext/kate/meson.build: + * ext/libde265/meson.build: + * ext/libmms/meson.build: + * ext/mpeg2enc/meson.build: + * ext/mplex/meson.build: + * ext/opencv/meson.build: + * ext/openh264/meson.build: + * ext/openjpeg/meson.build: + * ext/opus/meson.build: + * ext/resindvd/meson.build: + * ext/rsvg/meson.build: + * ext/rtmp/meson.build: + * ext/sbc/meson.build: + * ext/smoothstreaming/meson.build: + * ext/soundtouch/meson.build: + * ext/spandsp/meson.build: + * ext/srtp/meson.build: + * ext/ttml/meson.build: + * ext/voaacenc/meson.build: + * ext/vulkan/meson.build: + * ext/wayland/meson.build: + * ext/webp/meson.build: + * ext/webrtc/meson.build: + * ext/webrtcdsp/meson.build: + * ext/x265/meson.build: + * ext/zbar/meson.build: + * gst-libs/gst/adaptivedemux/meson.build: + * gst-libs/gst/codecparsers/meson.build: + * gst-libs/gst/mpegts/gstmpegtsdescriptor.c: + * gst-libs/gst/mpegts/gstmpegtssection.c: + * gst-libs/gst/player/gstplayer.c: + * gst/accurip/meson.build: + * gst/adpcmdec/meson.build: + * gst/adpcmenc/meson.build: + * gst/aiff/meson.build: + * gst/asfmux/meson.build: + * gst/audiobuffersplit/meson.build: + * gst/audiofxbad/meson.build: + * gst/audiomixmatrix/meson.build: + * gst/audiovisualizers/meson.build: + * gst/autoconvert/meson.build: + * gst/bayer/meson.build: + * gst/camerabin2/meson.build: + * gst/coloreffects/meson.build: + * gst/debugutils/meson.build: + * gst/dvbsuboverlay/meson.build: + * gst/dvdspu/meson.build: + * gst/faceoverlay/meson.build: + * gst/festival/meson.build: + * gst/fieldanalysis/meson.build: + * gst/freeverb/meson.build: + * gst/frei0r/meson.build: + * gst/gaudieffects/meson.build: + * gst/gdp/meson.build: + * gst/geometrictransform/meson.build: + * gst/id3tag/meson.build: + * gst/inter/meson.build: + * gst/interlace/meson.build: + * gst/ivfparse/meson.build: + * gst/ivtc/meson.build: + * gst/jp2kdecimator/meson.build: + * gst/jpegformat/meson.build: + * gst/librfb/meson.build: + * gst/midi/meson.build: + * gst/mpegdemux/meson.build: + * gst/mpegpsmux/meson.build: + * gst/mpegtsdemux/meson.build: + * gst/mpegtsmux/meson.build: + * gst/mxf/meson.build: + * gst/netsim/meson.build: + * gst/onvif/meson.build: + * gst/pcapparse/meson.build: + * gst/pnm/meson.build: + * gst/rawparse/meson.build: + * gst/removesilence/meson.build: + * gst/sdp/meson.build: + * gst/segmentclip/meson.build: + * gst/siren/meson.build: + * gst/smooth/meson.build: + * gst/speed/meson.build: + * gst/subenc/meson.build: + * gst/timecode/meson.build: + * gst/videofilters/meson.build: + * gst/videoframe_audiolevel/meson.build: + * gst/videoparsers/meson.build: + * gst/videosignal/meson.build: + * gst/vmnc/meson.build: + * gst/y4m/meson.build: + * gst/yadif/meson.build: + * meson.build: + * meson_options.txt: + * sys/bluez/meson.build: + * sys/d3dvideosink/meson.build: + * sys/decklink/meson.build: + * sys/directsound/meson.build: + * sys/dvb/meson.build: + * sys/fbdev/meson.build: + * sys/ipcpipeline/meson.build: + * sys/kms/meson.build: + * sys/msdk/meson.build: + * sys/shm/meson.build: + * sys/uvch264/meson.build: + * sys/wasapi/meson.build: + * sys/winks/meson.build: + * sys/winscreencap/meson.build: + docs: Build documentation with hotdoc + +2018-11-12 18:24:20 -0300 Thibault Saunier + + * ext/curl/gstcurlhttpsrc.c: + * ext/dtls/gstdtlsdec.c: + * ext/dtls/gstdtlssrtpdec.c: + Mark some properties as DOC_SHOW_DEFAULT + +2018-08-10 20:32:30 -0400 Thibault Saunier + + * ext/closedcaption/io-sim.c: + * ext/curl/gstcurlbasesink.c: + * ext/curl/gstcurlfilesink.c: + * ext/curl/gstcurlftpsink.c: + * ext/curl/gstcurlhttpsink.c: + * ext/curl/gstcurlsftpsink.c: + * ext/curl/gstcurlsmtpsink.c: + * ext/curl/gstcurlsshsink.c: + * ext/curl/gstcurltlssink.c: + * ext/smoothstreaming/gstmssmanifest.c: + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/gstwebrtcice.c: + * gst-libs/gst/adaptivedemux/gstadaptivedemux.c: + * gst-libs/gst/codecparsers/gsth264parser.h: + * gst-libs/gst/codecparsers/gsth265parser.c: + * gst-libs/gst/codecparsers/nalutils.c: + * gst-libs/gst/mpegts/gst-dvb-descriptor.c: + * gst-libs/gst/mpegts/gst-dvb-descriptor.h: + * gst-libs/gst/player/gstplayer-g-main-context-signal-dispatcher.c: + * gst-libs/gst/player/gstplayer-media-info.c: + * gst-libs/gst/player/gstplayer.c: + * gst-libs/gst/webrtc/dtlstransport.h: + * gst-libs/gst/webrtc/icetransport.h: + * gst-libs/gst/webrtc/rtpreceiver.h: + * gst-libs/gst/webrtc/rtpsender.h: + * gst-libs/gst/webrtc/rtptransceiver.h: + * gst-libs/gst/webrtc/webrtc_fwd.h: + * gst/geometrictransform/geometricmath.c: + * sys/shm/shmpipe.c: + Minor documentation fixes + +2018-10-22 11:30:09 +0200 Thibault Saunier + + * ext/directfb/dfbvideosink.c: + directfb: Fixup plugin name to match plugin filename + Has required by the new PLUGIN_DEFINE macro + +2019-05-01 19:40:03 +0200 Niklas Hambüchen + + * ext/gsm/meson.build: + meson: Fix missing GSM_HEADER_IN_SUBDIR logic + Until now, this hadn't been translated from autoconf yet. + +2019-05-01 19:16:58 +0200 Niklas Hambüchen + + * ext/gsm/meson.build: + meson: Fix typo in gsm header file name + This was wrong since commit c360ceea4deb5d56c94126e31b9614734e8c1a7e. + Also fix incorrect indentation (tab instead of spaces). + Found using hermetic builds with Nix: + https://github.com/NixOS/nixpkgs/pull/54398#discussion_r280125735 + +2019-05-01 19:22:17 +0200 Mark Nauwelaerts + + * ext/srt/gstsrtobject.c: + * ext/srt/gstsrtobject.h: + * ext/srt/gstsrtsink.c: + * ext/srt/gstsrtsrc.c: + srt: set cancellation in locked section + ... to avoid race with wait which uses it with 'flushing' flag state semantics. + +2019-05-01 19:01:03 +0200 Mark Nauwelaerts + + * ext/srt/gstsrtobject.c: + * ext/srt/gstsrtobject.h: + srt: avoid srtsrc segfault upon downward state change + ... when it has not yet been connected to. + Also, a condition variable is not a semaphore, so a lock/wait/unlock + sequence is inherently racy without any state checking. So switch to + a different lock and check the intended state. + +2019-05-01 18:58:30 +0200 Mark Nauwelaerts + + * ext/srt/gstsrtobject.c: + srt: initialize list access within locked region + +2019-05-09 14:08:31 +0200 Niels De Graef + + * ext/webrtc/gstwebrtcbin.c: + webrtc: Fix signals documentation + Some GIR annotations were incorrect or even missing. The former isn't + good for bindings, while the latter is especially annoying for signal + handlers, as that means your arguments will get the wrong names in the + rendered documentation. + +2019-05-09 15:11:17 +0900 Seungha Yang + + * sys/nvenc/gstnvbaseenc.c: + nvenc: Respect display aspect ratio and set to encoding parameter + It should be written in VUI parameter for proper rendering + +2019-05-08 15:46:26 +0200 Niels De Graef + + * gst-libs/gst/webrtc/dtlstransport.h: + * gst-libs/gst/webrtc/icetransport.h: + * gst-libs/gst/webrtc/rtcsessiondescription.h: + * gst-libs/gst/webrtc/rtpreceiver.h: + * gst-libs/gst/webrtc/rtpsender.h: + * gst-libs/gst/webrtc/rtptransceiver.h: + webrtc: Add g_autoptr() support for public types + +2019-05-08 13:35:25 +0200 Víctor Manuel Jáquez Leal + + * ext/openh264/gstopenh264enc.cpp: + openh264enc: Fix compilation with openh264 v2.0 + As OpenH264 increased its version to 2.0 the guard for structure + member is not valid. + This patch will fix the compilation with gst-build and openh264. + +2019-05-08 19:26:03 +0900 Seungha Yang + + * sys/meson.build: + * sys/nvenc/meson.build: + meson: Allow CUDA_PATH fallback on linux + That's what we've supported via autotools build + Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/966 + +2019-05-04 20:56:38 +0900 Seungha Yang + + * sys/nvenc/gstnvbaseenc.c: + * sys/nvenc/gstnvh264enc.c: + nvh264enc: Fix broken Y444 format encoding with system memory Y444 support + separateColourPlaneFlag is mapped to separate_colour_plane_flag which + means Y, U and V planes are separately processed as monochrome sampled pictures. + So encoder shouldn't set that flag for normal 4:4:4 encoding. + Also for 4:4:4 encoding, NV_ENC_H264_PROFILE_HIGH_444_GUID profile must be + explicitly set. + +2019-05-05 22:11:16 +0200 Christoph Reiter + + * gst-libs/gst/opencv/meson.build: + meson: fix build with opencv=enabled and opencv4. Fixes #964 + Having the opencv feature enabled would lead to the opencv3 dependency + being required which failed with only opencv4 being available. + Instead don't require anything and error out at the end if the feature was enabled + but no dependency was found. + +2019-05-05 19:27:15 -0400 Thibault Saunier + + * ext/colormanagement/meson.build: + * ext/meson.build: + * meson_options.txt: + meson: Add support for the colormanagement plugin + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/965 + +2019-05-05 12:34:23 +0200 Christoph Reiter + + * gst-libs/gst/sctp/Makefile.am: + autotools: gstsctp: set LDFLAGS + This fixes the mingw build which failed because of "-no-undefined" missing. + +2019-05-04 00:15:32 +0300 Sebastian Dröge + + * sys/decklink/gstdecklinkvideosink.cpp: + * sys/decklink/gstdecklinkvideosink.h: + * sys/decklink/gstdecklinkvideosrc.cpp: + * sys/decklink/gstdecklinkvideosrc.h: + decklink: Add support for parsing/outputting AFD/Bar + +2019-04-22 15:42:12 +0300 Sebastian Dröge + + * sys/decklink/gstdecklink.cpp: + * sys/decklink/gstdecklink.h: + * sys/decklink/gstdecklinkvideosrc.cpp: + decklink: Allow VANC to be used for all modes + +2019-04-16 13:15:40 +0300 Sebastian Dröge + + * sys/decklink/gstdecklink.cpp: + * sys/decklink/gstdecklink.h: + decklink: Add support for widescreen NTSC/PAL + Same as non-widescreen but with a different pixel-aspect-ratio. + +2019-05-01 21:24:49 +0900 Seungha Yang + + * gst/videoparsers/gsth265parse.c: + * gst/videoparsers/gsth265parse.h: + h265parse: Parse mastering display info and content light level from SEI + ... and set to caps if necessary. + Note 1) the mastering display info and content light level SEI meessages + are persistent in the corresponding codec video sequence (i.e., GOP). + So any bitstream containing those SEI messages + (and also all pictures are intended to be HDR rendered) should be ensured that + each first slice of codec video sequence follows those SEI messages. + Note 2) The codec video sequence is a group an [IRAP + NoRaslOutputFlag == 1] + and following AUs which are not [IRAP + NoRaslOutputFlag == 1] + The NoRaslOutputFlag is equal to 1 for each IDR AU, BLA AU and some CRA AU. + For a CRA AU to have NoRaslOutputFlag equal to 1, following condition should required. + * When the CRA AU is the first AU in the bitstream in decoding order + * or the CRA AU is the first AU that follows an end of sequence NAL in decoding order + * or the HandleCraAsBlaFlag equal to 1. + Due to the limited context in parse element, in this commint, CRA AU will not considered as + having the NoRaslOutputFlag equal to 1. Therefore, in the worst case, + mastering-display-info and content-light-level could be cleared one GOP after + when stream was chagned from HDR to SDR. + +2019-04-26 20:11:12 +0900 Seungha Yang + + * gst-libs/gst/codecparsers/gsth265parser.c: + * gst-libs/gst/codecparsers/gsth265parser.h: + h265parser: Add parsing mastering display colour volume SEI message + ... and content light level SEI message. Those SEI messages are required + for HDR rendering. + +2019-05-03 19:10:22 +0700 Roman Shpuntov + + * sys/androidmedia/gstamc.c: + androidmedia: added path /system/vendor/etc to dependency + +2019-05-02 14:29:03 +0200 Niels De Graef + + * sys/nvdec/Makefile.am: + * sys/nvenc/Makefile.am: + nvenc/nvdec: Add NVIDIA SDK headers to noinst_HEADERS + The tarballs that were being spun for 1.16 don't contain these headers + due to this small oversight, so let's add them. + +2019-04-05 17:01:08 -0400 Nicolas Dufresne + + * docs/plugins/Makefile.am: + * docs/plugins/gst-plugins-bad-plugins-docs.sgml: + * docs/plugins/gst-plugins-bad-plugins-sections.txt: + * docs/plugins/gst-plugins-bad-plugins.args: + * docs/plugins/gst-plugins-bad-plugins.hierarchy: + * docs/plugins/gst-plugins-bad-plugins.interfaces: + * docs/plugins/inspect/plugin-rist.xml: + rist: Enable plugin doc creation + +2019-01-21 11:44:10 -0500 Nicolas Dufresne + + * configure.ac: + * gst/meson.build: + * gst/rist/Makefile.am: + * gst/rist/gstrist.h: + * gst/rist/gstristplugin.c: + * gst/rist/gstristrtxreceive.c: + * gst/rist/gstristrtxsend.c: + * gst/rist/gstristsink.c: + * gst/rist/gstristsrc.c: + * gst/rist/meson.build: + * meson_options.txt: + rist: Add a plugin implenting RIST TR-06-1 Simple Profile + RIST TR-06-1 is a specification for video streaming made by the VSF + group. It is using a subset of RTP specification to which some + modification has been made to improve RTX behaviour and avoid any need + for signaling. The plugin implement ristrtxsend / ristrtxreceive element + which are the RIST specific equivalent of rtprtxsend/rtprtxreceive and + ristsink / ristsrc which implement rist transmitter and receiver. The + RIST protocol is meant to be used in unidirectional way. Typically, MPEG + TS over RTP is used. + Currently we support unicast and multicast streaming according to the + specification. This patch does not include any bonding support yet. The + ristsrc element introduce rist:// URI handling in parallel to it's + property configuration interface. + +2019-05-01 15:31:34 -0400 Aaron Boxer + + * ext/closedcaption/gstccextractor.c: + ccextractor: copy input buffer flags to output buffer + GST_VIDEO_BUFFER_FLAG_INTERLACED and GST_VIDEO_BUFFER_FLAG_TFF + flags are needed when processing SCTE 20 closed captions for an interlaced + stream, when we need to convert back to analog, in which case we need to match + the caption to the top or bottom field + +2019-05-01 19:29:16 -0400 Xavier Claessens + + * gst/videoparsers/gsth264parse.c: + h264parse: Fix typo when setting multiview mode and flags + +2019-05-02 13:20:30 +0900 Seungha Yang + + * ext/x265/gstx265enc.c: + x265enc: Do not drop SEI nals from header + SEI message shouldn't be dropped since it contains various informal (or essential) + information. + +2019-05-02 12:21:38 +0900 Seungha Yang + + * ext/x265/gstx265enc.c: + x265enc: Add support mastering display info and content light level encoding + ... if (x265 version >= 1.9) requirement is satisfied. + The SEI messages were supported since x265 version 1.8 + but there was API change from version 1.9 + (contentLightLevelInfo was renamed to maxCLL and maxFALL) + +2019-04-30 21:25:12 -0300 Marcos Kintschner + + * sys/wasapi/gstwasapisrc.c: + * sys/wasapi/gstwasapisrc.h: + Fixed segtotal value being always 2 due to an unused variable + The 'MAX' expression used to set segtotal always returned 2 because the unused and unitialized variable buffer_frame_count was always 0 + +2019-04-26 09:52:43 +0800 Wangfei + + * gst-libs/gst/codecparsers/gsth265parser.c: + * gst-libs/gst/codecparsers/gsth265parser.h: + h265parser: parse range extension message in SPS/PPS. + Range extension message may exist in some extension-profile clips. + +2019-04-26 16:25:17 +0200 Fabio D'Urso + + * ext/sctp/sctpassociation.c: + sctp: increase DEFAULT_NUMBER_OF_SCTP_STREAMS to 1024 + This change makes it possible to create more than just 5 webrtc + data channels. The maximum number of data channels is exactly + DEFAULT_NUMBER_OF_SCTP_STREAMS / 2, therefore the limit is now + 512. + +2019-04-23 15:09:17 +0300 Sebastian Dröge + + * gst-libs/gst/codecparsers/gsth264parser.h: + * gst-libs/gst/codecparsers/gsth265parser.h: + * gst-libs/gst/interfaces/photography.h: + libs: Fix various Since markers + +2019-04-23 14:33:05 +0300 Sebastian Dröge + + * gst-libs/gst/player/gstplayer-video-overlay-video-renderer.c: + * gst-libs/gst/player/gstplayer.c: + player: Fix various Since markers in the docs + +2019-04-23 09:06:13 +0200 Nicola Murino + + * configure.ac: + * ext/opencv/meson.build: + opencv: allow compilation against 4.1.x + +2019-04-21 17:17:14 +0200 Mark Nauwelaerts + + * ext/srt/gstsrtsink.c: + * ext/srt/gstsrtsrc.c: + srt: post error when failing to start + ... as appropriate for a subsequent state change failure + +2019-04-21 16:47:30 +0200 Mark Nauwelaerts + + * ext/srt/gstsrtobject.c: + srt: downgrade regular message to log level + +2019-04-19 10:33:49 +0100 Tim-Philipp Müller + + * README: + * RELEASE: + * configure.ac: + * docs/plugins/inspect/plugin-accurip.xml: + * docs/plugins/inspect/plugin-adpcmdec.xml: + * docs/plugins/inspect/plugin-adpcmenc.xml: + * docs/plugins/inspect/plugin-aiff.xml: + * docs/plugins/inspect/plugin-asfmux.xml: + * docs/plugins/inspect/plugin-assrender.xml: + * docs/plugins/inspect/plugin-audiobuffersplit.xml: + * docs/plugins/inspect/plugin-audiofxbad.xml: + * docs/plugins/inspect/plugin-audiolatency.xml: + * docs/plugins/inspect/plugin-audiomixmatrix.xml: + * docs/plugins/inspect/plugin-audiovisualizers.xml: + * docs/plugins/inspect/plugin-autoconvert.xml: + * docs/plugins/inspect/plugin-bayer.xml: + * docs/plugins/inspect/plugin-bluez.xml: + * docs/plugins/inspect/plugin-bs2b.xml: + * docs/plugins/inspect/plugin-bz2.xml: + * docs/plugins/inspect/plugin-camerabin.xml: + * docs/plugins/inspect/plugin-chromaprint.xml: + * docs/plugins/inspect/plugin-closedcaption.xml: + * docs/plugins/inspect/plugin-coloreffects.xml: + * docs/plugins/inspect/plugin-colormanagement.xml: + * docs/plugins/inspect/plugin-curl.xml: + * docs/plugins/inspect/plugin-dashdemux.xml: + * docs/plugins/inspect/plugin-dc1394.xml: + * docs/plugins/inspect/plugin-de265.xml: + * docs/plugins/inspect/plugin-debugutilsbad.xml: + * docs/plugins/inspect/plugin-decklink.xml: + * docs/plugins/inspect/plugin-dfbvideosink.xml: + * docs/plugins/inspect/plugin-dtls.xml: + * docs/plugins/inspect/plugin-dtsdec.xml: + * docs/plugins/inspect/plugin-dvb.xml: + * docs/plugins/inspect/plugin-dvbsuboverlay.xml: + * docs/plugins/inspect/plugin-dvdspu.xml: + * docs/plugins/inspect/plugin-faac.xml: + * docs/plugins/inspect/plugin-faad.xml: + * docs/plugins/inspect/plugin-faceoverlay.xml: + * docs/plugins/inspect/plugin-fbdevsink.xml: + * docs/plugins/inspect/plugin-fdkaac.xml: + * docs/plugins/inspect/plugin-festival.xml: + * docs/plugins/inspect/plugin-fieldanalysis.xml: + * docs/plugins/inspect/plugin-flite.xml: + * docs/plugins/inspect/plugin-fluidsynthmidi.xml: + * docs/plugins/inspect/plugin-freeverb.xml: + * docs/plugins/inspect/plugin-frei0r.xml: + * docs/plugins/inspect/plugin-gaudieffects.xml: + * docs/plugins/inspect/plugin-gdp.xml: + * docs/plugins/inspect/plugin-geometrictransform.xml: + * docs/plugins/inspect/plugin-gme.xml: + * docs/plugins/inspect/plugin-gsm.xml: + * docs/plugins/inspect/plugin-hls.xml: + * docs/plugins/inspect/plugin-id3tag.xml: + * docs/plugins/inspect/plugin-inter.xml: + * docs/plugins/inspect/plugin-interlace.xml: + * docs/plugins/inspect/plugin-ipcpipeline.xml: + * docs/plugins/inspect/plugin-ivfparse.xml: + * docs/plugins/inspect/plugin-ivtc.xml: + * docs/plugins/inspect/plugin-jp2kdecimator.xml: + * docs/plugins/inspect/plugin-jpegformat.xml: + * docs/plugins/inspect/plugin-kate.xml: + * docs/plugins/inspect/plugin-kms.xml: + * docs/plugins/inspect/plugin-ladspa.xml: + * docs/plugins/inspect/plugin-legacyrawparse.xml: + * docs/plugins/inspect/plugin-midi.xml: + * docs/plugins/inspect/plugin-mms.xml: + * docs/plugins/inspect/plugin-modplug.xml: + * docs/plugins/inspect/plugin-mpegpsdemux.xml: + * docs/plugins/inspect/plugin-mpegpsmux.xml: + * docs/plugins/inspect/plugin-mpegtsdemux.xml: + * docs/plugins/inspect/plugin-mpegtsmux.xml: + * docs/plugins/inspect/plugin-musepack.xml: + * docs/plugins/inspect/plugin-mxf.xml: + * docs/plugins/inspect/plugin-neonhttpsrc.xml: + * docs/plugins/inspect/plugin-netsim.xml: + * docs/plugins/inspect/plugin-ofa.xml: + * docs/plugins/inspect/plugin-openal.xml: + * docs/plugins/inspect/plugin-opencv.xml: + * docs/plugins/inspect/plugin-openexr.xml: + * docs/plugins/inspect/plugin-openh264.xml: + * docs/plugins/inspect/plugin-openjpeg.xml: + * docs/plugins/inspect/plugin-openmpt.xml: + * docs/plugins/inspect/plugin-openni2.xml: + * docs/plugins/inspect/plugin-opusparse.xml: + * docs/plugins/inspect/plugin-pcapparse.xml: + * docs/plugins/inspect/plugin-pnm.xml: + * docs/plugins/inspect/plugin-proxy.xml: + * docs/plugins/inspect/plugin-removesilence.xml: + * docs/plugins/inspect/plugin-resindvd.xml: + * docs/plugins/inspect/plugin-rfbsrc.xml: + * docs/plugins/inspect/plugin-rsvg.xml: + * docs/plugins/inspect/plugin-rtmp.xml: + * docs/plugins/inspect/plugin-rtponvif.xml: + * docs/plugins/inspect/plugin-sbc.xml: + * docs/plugins/inspect/plugin-sctp.xml: + * docs/plugins/inspect/plugin-sdpelem.xml: + * docs/plugins/inspect/plugin-segmentclip.xml: + * docs/plugins/inspect/plugin-shm.xml: + * docs/plugins/inspect/plugin-siren.xml: + * docs/plugins/inspect/plugin-smooth.xml: + * docs/plugins/inspect/plugin-smoothstreaming.xml: + * docs/plugins/inspect/plugin-sndfile.xml: + * docs/plugins/inspect/plugin-soundtouch.xml: + * docs/plugins/inspect/plugin-spandsp.xml: + * docs/plugins/inspect/plugin-speed.xml: + * docs/plugins/inspect/plugin-srt.xml: + * docs/plugins/inspect/plugin-srtp.xml: + * docs/plugins/inspect/plugin-subenc.xml: + * docs/plugins/inspect/plugin-teletext.xml: + * docs/plugins/inspect/plugin-timecode.xml: + * docs/plugins/inspect/plugin-ttmlsubs.xml: + * docs/plugins/inspect/plugin-uvch264.xml: + * docs/plugins/inspect/plugin-vdpau.xml: + * docs/plugins/inspect/plugin-videofiltersbad.xml: + * docs/plugins/inspect/plugin-videoframe_audiolevel.xml: + * docs/plugins/inspect/plugin-videoparsersbad.xml: + * docs/plugins/inspect/plugin-videosignal.xml: + * docs/plugins/inspect/plugin-vmnc.xml: + * docs/plugins/inspect/plugin-voaacenc.xml: + * docs/plugins/inspect/plugin-voamrwbenc.xml: + * docs/plugins/inspect/plugin-vulkan.xml: + * docs/plugins/inspect/plugin-wasapi.xml: + * docs/plugins/inspect/plugin-waylandsink.xml: + * docs/plugins/inspect/plugin-webp.xml: + * docs/plugins/inspect/plugin-webrtc.xml: + * docs/plugins/inspect/plugin-wildmidi.xml: + * docs/plugins/inspect/plugin-x265.xml: + * docs/plugins/inspect/plugin-y4mdec.xml: + * docs/plugins/inspect/plugin-yadif.xml: + * docs/plugins/inspect/plugin-zbar.xml: + * meson.build: + Back to development + === release 1.16.0 === 2019-04-19 00:28:55 +0100 Tim-Philipp Müller @@ -145988,7 +162942,7 @@ h264 Fixes #606657 -2010-01-11 22:41:57 +0300 +2010-01-11 22:41:57 +0300 ������ ��������� * ext/soundtouch/gstbpmdetect.cc: * ext/soundtouch/gstpitch.cc: diff --git a/NEWS b/NEWS index 817de13720..a4e7232a19 100644 --- a/NEWS +++ b/NEWS @@ -1,14 +1,30 @@ -GSTREAMER 1.16 RELEASE NOTES +GSTREAMER 1.18 RELEASE NOTES -GStreamer 1.16.0 was originally released on 19 April 2019. +THESE RELEASE NOTES ARE A PLACEHOLDER, PLEASE BEAR WITH US WHILE WE +FINISH WRITING UP THE REAL THING. -See https://gstreamer.freedesktop.org/releases/1.16/ for the latest +GStreamer 1.18.0 has not yet been released. It is scheduled for release +in summer 2020 now. + +1.17.x is the unstable development series that is currently being +developed in the git master branch and which will eventually result in +1.18, and 1.17.1 is the current development release in that series. + +The schedule for the 1.18 development cycle is yet to be confirmed, but +it is expected that feature freeze will be in June/July 2020, followed +by several 1.17 pre-releases and then a new 1.18 stable release in +July/August 2020. + +1.18 will be backwards-compatible to the stable 1.16, 1.14, 1.12, 1.10, +1.8, 1.6, 1.4, 1.2 and 1.0 release series. + +See https://gstreamer.freedesktop.org/releases/1.18/ for the latest version of this document. -_Last updated: Friday 19 April 2019, 00:00 UTC (log)_ +_Last updated: Thursday 18 June 2020, 16:00 UTC (log)_ Introduction @@ -23,1146 +39,133 @@ fixes and other improvements. Highlights -- GStreamer WebRTC stack gained support for data channels for - peer-to-peer communication based on SCTP, BUNDLE support, as well as - support for multiple TURN servers. - -- AV1 video codec support for Matroska and QuickTime/MP4 containers - and more configuration options and supported input formats for the - AOMedia AV1 encoder - -- Support for Closed Captions and other Ancillary Data in video - -- Support for planar (non-interleaved) raw audio - -- GstVideoAggregator, compositor and OpenGL mixer elements are now in - -base - -- New alternate fields interlace mode where each buffer carries a - single field - -- WebM and Matroska ContentEncryption support in the Matroska demuxer - -- new WebKit WPE-based web browser source element - -- Video4Linux: HEVC encoding and decoding, JPEG encoding, and improved - dmabuf import/export - -- Hardware-accelerated Nvidia video decoder gained support for VP8/VP9 - decoding, whilst the encoder gained support for H.265/HEVC encoding. - -- Many improvements to the Intel Media SDK based hardware-accelerated - video decoder and encoder plugin (msdk): dmabuf import/export for - zero-copy integration with other components; VP9 decoding; 10-bit - HEVC encoding; video post-processing (vpp) support including - deinterlacing; and the video decoder now handles dynamic resolution - changes. - -- The ASS/SSA subtitle overlay renderer can now handle multiple - subtitles that overlap in time and will show them on screen - simultaneously - -- The Meson build is now feature-complete (*) and it is now the - recommended build system on all platforms. The Autotools build is - scheduled to be removed in the next cycle. - -- The GStreamer Rust bindings and Rust plugins module are now - officially part of upstream GStreamer. - -- The GStreamer Editing Services gained a gesdemux element that allows - directly playing back serialized edit list with playbin or - (uri)decodebin - -- Many performance improvements +- FIXME Major new features and changes Noteworthy new API -- GstAggregator has a new "min-upstream-latency" property that forces - a minimum aggregate latency for the input branches of an aggregator. - This is useful for dynamic pipelines where branches with a higher - latency might be added later after the pipeline is already up and - running and where a change in the latency would be disruptive. This - only applies to the case where at least one of the input branches is - live though, it won’t force the aggregator into live mode in the - absence of any live inputs. - -- GstBaseSink gained a "processing-deadline" property and - setter/getter API to configure a processing deadline for live - pipelines. The processing deadline is the acceptable amount of time - to process the media in a live pipeline before it reaches the sink. - This is on top of the systemic latency that is normally reported by - the latency query. This defaults to 20ms and should make pipelines - such as v4l2src ! xvimagesink not claim that all frames are late in - the QoS events. Ideally, this should replace the "max-lateness" - property for most applications. - -- RTCP Extended Reports (XR) parsing according to RFC 3611: - Loss/Duplicate RLE, Packet Receipt Times, Receiver Reference Time, - Delay since the last Receiver (DLRR), Statistics Summary, and VoIP - Metrics reports. This only provides the ability to parse such - packets, generation of XR packets is not supported yet and XR - packets are not automatically parsed by rtpbin / rtpsession but must - be actively handled by the application. - -- a new mode for interlaced video was added where each buffer carries - a single field of interlaced video, with buffer flags indicating - whether the field is the top field or bottom field. Top and bottom - fields are expected to alternate in this mode. Caps for this - interlace mode must also carry a format:Interlaced caps feature to - ensure backwards compatibility. - -- The video library has gained support for three new raw pixel - formats: - - - Y410: packed 4:4:4 YUV, 10 bits per channel - - Y210: packed 4:2:2 YUV, 10 bits per channel - - NV12_10LE40: fully-packed 10-bit variant of NV12_10LE32, - i.e. without the padding bits - -- GstRTPSourceMeta is a new meta that can be used to transport - information about the origin of depayloaded or decoded RTP buffers, - e.g. when mixing audio from multiple sources into a single stream. A - new "source-info" property on the RTP depayloader base class - determines whether depayloaders should put this meta on outgoing - buffers. Similarly, the same property on RTP payloaders determines - whether they should use the information from this meta to construct - the CSRCs list on outgoing RTP buffers. - -- gst_sdp_message_from_text() is a convenience constructor to parse - SDPs from a string which is particularly useful for language - bindings. - -Support for Planar (Non-Interleaved) Raw Audio - -Raw audio samples are usually passed around in interleaved form in -GStreamer, which means that if there are multiple audio channels the -samples for each channel are interleaved in memory, e.g. -|LEFT|RIGHT|LEFT|RIGHT|LEFT|RIGHT| for stereo audio. A non-interleaved -or planar arrangement in memory would look like -|LEFT|LEFT|LEFT|RIGHT|RIGHT|RIGHT| instead, possibly with -|LEFT|LEFT|LEFT| and |RIGHT|RIGHT|RIGHT| residing in separate memory -chunks or separated by some padding. - -GStreamer has always had signalling for non-interleaved audio since -version 1.0, but it was never actually properly implemented in any -elements. audioconvert would advertise support for it, but wasn’t -actually able to handle it correctly. - -With this release we now have full support for non-interleaved audio as -well, which means more efficient integration with external APIs that -handle audio this way, but also more efficient processing of certain -operations like interleaving multiple 1-channel streams into a -multi-channel stream which can be done without memory copies now. - -New API to support this has been added to the GStreamer Audio support -library: There is now a new GstAudioMeta which describes how data is -laid out inside the buffer, and buffers with non-interleaved audio must -always carry this meta. To access the non-interleaved audio samples you -must map such buffers with gst_audio_buffer_map() which works much like -gst_buffer_map() or gst_video_frame_map() in that it will populate a -little GstAudioBuffer helper structure passed to it with the number of -samples, the number of planes and pointers to the start of each plane in -memory. This function can also be used to map interleaved audio buffers -in which case there will be only one plane of interleaved samples. - -Of course support for this has also been implemented in the various -audio helper and conversion APIs, base classes, and in elements such as -audioconvert, audioresample, audiotestsrc, audiorate. - -Support for Closed Captions and Other Ancillary Data in Video - -The video support library has gained support for detecting and -extracting Ancillary Data from videos as per the SMPTE S291M -specification, including: - -- a VBI (Vertical Blanking Interval) parser that can detect and - extract Ancillary Data from Vertical Blanking Interval lines of - component signals. This is currently supported for videos in v210 - and UYVY format. - -- a new GstMeta for closed captions: GstVideoCaptionMeta. This - supports the two types of closed captions, CEA-608 and CEA-708, - along with the four different ways they can be transported (other - systems are a superset of those). - -- a VBI (Vertical Blanking Interval) encoder for writing ancillary - data to the Vertical Blanking Interval lines of component signals. - -The new closedcaption plugin in gst-plugins-bad then makes use of all -this new infrastructure and provides the following elements: - -- cccombiner: a closed caption combiner that takes a closed captions - stream and another stream and adds the closed captions as - GstVideoCaptionMeta to the buffers of the other stream. - -- ccextractor: a closed caption extractor which will take - GstVideoCaptionMeta from input buffers and output them as a separate - closed captions stream. - -- ccconverter: a closed caption converter that can convert between - different formats - -- line21encoder, line21decoder: inject/extract line21 closed captions - to/from SD video streams - -- cc708overlay: decodes CEA 608/708 captions and overlays them on - video - -Additionally, the following elements have also gained Closed Caption -support: - -- qtdemux and qtmux support CEA 608/708 Closed Caption tracks - -- mpegvideoparse, h264parse extracts Closed Captions from MPEG-2/H.264 - video streams - -- avviddec, avvidenc, x264enc got support for extracting/injecting - Closed Captions - -- decklinkvideosink can output closed captions and decklinkvideosrc - can extract closed captions - -- playbin and playbin3 learned how to autoplug CEA 608/708 CC overlay - elements - -- the externally maintained ajavideosrc element for AJA capture cards - has support for extracting closed captions - -The rsclosedcaption plugin in the Rust plugins collection includes a -MacCaption (MCC) file parser and encoder. +- FIXME New Elements -- overlaycomposition: New element that allows applications to draw - GstVideoOverlayCompositions on a stream. The element will emit the - "draw" signal for each video buffer, and the application then - generates an overlay for that frame (or not). This is much more - performant than e.g. cairooverlay for many use cases, e.g. because - pixel format conversions can be avoided or the blitting of the - overlay can be delegated to downstream elements (such as - gloverlaycompositor). It’s particularly useful for cases where only - a small section of the video frame should be drawn on. - -- gloverlaycompositor: New OpenGL-based compositor element that - flattens any overlays from GstVideoOverlayCompositionMetas into the - video stream. This element is also always part of glimagesink. - -- glalpha: New element that adds an alpha channel to a video stream. - The values of the alpha channel can either be set to a constant or - can be dynamically calculated via chroma keying. It is similar to - the existing alpha element but based on OpenGL. Calculations are - done in floating point so results may not be identical to the output - of the existing alpha element. - -- rtpfunnel funnels together RTP streams into a single session. Use - cases include multiplexing and bundle. webrtcbin uses it to - implement BUNDLE support. - -- testsrcbin is a source element that provides an audio and/or video - stream and also announces them using the recently-introduced - GstStream API. This is useful for testing elements such as playbin3 - or uridecodebin3 etc. - -- New closed caption elements: cccombiner, ccextractor, ccconverter, - line21encoder, line21decoder and cc708overlay (see above) - -- wpesrc: new source element acting as a Web Browser based on WebKit - WPE - -- Two new OpenCV-based elements: cameracalibrate and cameraundistort - that can communicate to figure out distortion correction parameters - for a camera and correct for the distortion. - -- New sctp plugin based on usrsctp with sctpenc and sctpdec elements. - These elements are used inside webrtcbin for implementing data - channels. +- FIXME New element features and additions -- playbin3, playbin and playsink have gained a new "text-offset" - property to adjust the positioning of the selected subtitle stream - vis-a-vis the audio and video streams. This uses subtitleoverlay’s - new "subtitle-ts-offset" property. GstPlayer has gained matching API - for this, namely gst_player_get_text_video_offset(). - -- playbin3 buffering improvements: in network playback scenarios there - may be multiple inputs to decodebin3, and buffering will be done - before decodebin3 using queue2 or downloadbuffer elements inside - urisourcebin. Since this is before any parsers or demuxers there may - not be any bitrate information available for the various streams, so - it was difficult to configure the buffering there smartly within - global constraints. This was improved now: The queue2 elements - inside urisourcebin will now use the new bitrate query to figure out - a bitrate estimate for the stream if no bitrate was provided by - upstream, and urisourcebin will use the bitrates of the individual - queues to distribute the globally-set "buffer-size" budget in bytes - to the various queues. urisourcebin also gained "low-watermark" and - "high-watermark" properties which will be proxied to the internal - queues, as well as a read-only "statistics" property which allows - querying of the minimum/maximum/average byte and time levels of the - queues inside the urisourcebin in question. - -- splitmuxsink has gained a couple of new features: - - - new "async-finalize" mode: This mode is useful for muxers or - outputs that can take a long time to finalize a file. Instead of - blocking the whole upstream pipeline while the muxer is doing - its stuff, we can unlink it and spawn a new muxer + sink - combination to continue running normally. This requires us to - receive the muxer and sink (if needed) as factories via the new - "muxer-factory" and "sink-factory" properties, optionally - accompanied by their respective properties structures (set via - the new "muxer-properties" and "sink-properties" properties). - There are also new "muxer-added" and "sink-added" signals in - case custom code has to be called for them to configure them. - - - "split-at-running-time" action signal: When called by the user, - this action signal ends the current file (and starts a new one) - as soon as the given running time is reached. If called multiple - times, running times are queued up and processed in the order - they were given. - - - "split-after" action signal to finish outputting the current GOP - to the current file and then start a new file as soon as the GOP - is finished and a new GOP is opened (unlike the existing - "split-now" which immediately finishes the current file and - writes the current GOP into the next newly-started file). - - - "reset-muxer" property: when unset, the muxer is reset using - flush events instead of setting its state to NULL and back. This - means the muxer can keep state across resets, e.g. mpegtsmux - will keep the continuity counter continuous across segments as - required by hlssink2. - -- qtdemux gained PIFF track encryption box support in addition to the - already-existing PIFF sample encryption support, and also allows - applications to select which encryption system to use via a - "drm-preferred-decryption-system-id" context in case there are - multiple options. - -- qtmux: the "start-gap-threshold" property determines now whether an - edit list will be created to account for small gaps or offsets at - the beginning of a stream in case the start timestamps of tracks - don’t line up perfectly. Previously the threshold was hard-coded to - 1% of the (video) frame duration, now it is 0 by default (so edit - list will be created even for small differences), but fully - configurable. - -- rtpjitterbuffer has improved end-of-stream handling - -- rtpmp4vpay will be preferred over rtpmp4gpay for MPEG-4 video in - autoplugging scenarios now - -- rtspsrc now allows applications to send RTSP SET_PARAMETER and - GET_PARAMETER requests using action signals. - -- rtspsrc has a small (100ms) configurable teardown delay by default - to try and make sure an RTSP TEARDOWN request gets sent out when the - source element shuts down. This will block the downward PAUSED to - READY state change for a short time, but can be disabled where it’s - a problem. Some servers only allow a limited number of concurrent - clients, so if no proper TEARDOWN is sent new clients may have - problems connecting to the server for a while. - -- souphttpsrc behaves better with low bitrate streams now. Before it - would increase the read block size too quickly which could lead to - it not reading any data from the socket for a very long time with - low bitrate streams that are output live downstream. This could lead - to servers kicking off the client. - -- filesink: do internal buffering to avoid performance regression with - small writes since we bypass libc buffering by using writev() - instead of fwrite() - -- identity: add "eos-after" property and fix "error-after" property - when the element is reused - -- input-selector: lets context queries pass through, so that - e.g. upstream OpenGL elements can use contexts and displays - advertised by downstream elements - -- queue2: avoid ping-pong between 0% and 100% buffering messages if - upstream is pushing buffers larger than one of its limits, plus - performance optimisations - -- opusdec: new "phase-inversion" property to control phase inversion. - When enabled, this will slightly increase stereo quality, but - produces a stream that when downmixed to mono will suffer audio - distortions. - -- The x265enc HEVC encoder also exposes a "key-int-max" property to - configure the maximum allowed GOP size now. - -- decklinkvideosink has seen stability improvements for long-running - pipelines (potential crash due to overflow of leaked clock refcount) - and clock-slaving improvements when performing flushing seeks - (causing stalls in the output timeline), pausing and/or buffering. - -- srtpdec, srtpenc: add support for MKIs which allow multiple keys to - be used with a single SRTP stream - -- srtpdec, srtpenc: add support for AES-GCM and also add support for - it in gst-rtsp-server and rtspsrc. - -- The srt Secure Reliable Transport plugin has integrated server and - client elements srt{client,server}{src,sink} into one (srtsrc and - srtsink), since SRT connection mode can be changed by uri - parameters. - -- h264parse and h265parse will handle SEI recovery point messages and - mark recovery points as keyframes as well (in addition to IDR - frames) - -- webrtcbin: "add-turn-server" action signal to pass multiple ICE - relays (TURN servers). - -- The removesilence element has received various new features and - properties, such as a "threshold" property, detecting silence only - after minimum silence time/buffers, a "silent" property to control - bus message notifications as well as a "squash" property. - -- AOMedia AV1 decoder gained support for 10/12bit decoding whilst the - AV1 encoder supports more image formats and subsamplings now and - acquired support for rate control and profile related configuration. - -- The Fraunhofer fdkaac plugin can now be built against the 2.0.0 - version API and has improved multichannel support - -- kmssink now supports unpadded 24-bit RGB and can configure mode - setting from video info, which enables display of multi-planar - formats such as I420 or NV12 with modesetting. It has also gained a - number of new properties: The "restore-crtc" property does what it - says on the tin and is enabled by default. "plane-properties" and - "connector-properties" can be used to pass custom properties to the - DRM. - -- waylandsink has a "fullscreen" property now and supports the - XDG-Shell protocol. - -- decklinkvideosink, decklinkvideosrc support selecting between - half/full duplex - -- The vulkan plugin gained support for macOS and iOS via MoltenVK in - addition to the existing support for X11 and Wayland - -- imagefreeze has a new num-buffers property to limit the number of - buffers that are produced and to send an EOS event afterwards - -- webrtcbin has a new, introspectable get-transceiver signal in - addition to the old get-transceivers signal that couldn’t be used - from bindings - -- Support for per-element latency information was added to the latency - tracer +- FIXME Plugin and library moves -- The stereo element was moved from -bad into the existing audiofx - plugin in -good. If you get duplicate type registration warnings - when upgrading, check that you don’t have a stale stereoplugin lying - about somewhere. - -GstVideoAggregator, compositor, and OpenGL mixer elements moved from -bad to -base - -GstVideoAggregator is a new base class for raw video mixers and muxers -and is based on GstAggregator. It provides defined-latency mixing of raw -video inputs and ensures that the pipeline won’t stall even if one of -the input streams stops producing data. - -As part of the move to stabilise the API there were some last-minute API -changes and clean-ups, but those should mostly affect internal elements. -Most notably, the "ignore-eos" pad property was renamed to -"repeat-after-eos" and the conversion code was moved to a -GstVideoAggregatorConvertPad subclass to avoid code duplication, make -things less awkward for subclasses like the OpenGL-based video mixer, -and make the API more consistent with the audio aggregator API. - -It is used by the compositor element, which is a replacement for -‘videomixer’ which did not handle live inputs very well. compositor -should behave much better in that respect and generally behave as one -would expected in most scenarios. - -The compositor element has gained support for per-pad blending mode -operators (SOURCE, OVER, ADD) which determines what operator to use for -blending this pad over the previous ones. This can be used to implement -crossfading and the available operators can be extended in the future as -needed. - -A number of OpenGL-based video mixer elements (glvideomixer, glmixerbin, -glvideomixerelement, glstereomix, glmosaic) which are built on top of -GstVideoAggregator have also been moved from -bad to -base now. These -elements have been merged into the existing OpenGL plugin, so if you get -duplicate type registration warnings when upgrading, check that you -don’t have a stale openglmixers plugin lying about somewhere. +- FIXME Plugin removals The following plugins have been removed from gst-plugins-bad: -- The experimental daala plugin has been removed, since it’s not so - useful now that all effort is focused on AV1 instead, and it had to - be enabled explicitly with --enable-experimental anyway. - -- The spc plugin has been removed. It has been replaced by the gme - plugin. - -- The acmmp3dec and acmenc plugins for Windows have been removed. ACM - is an ancient legacy API and there was no point in keeping the - plugins around for a licensed MP3 decoder now that the MP3 patents - have expired and we have a decoder in -good. We also didn’t ship - these in our cerbero-built Windows packages, so it’s unlikely that - they’ll be missed. +- FIXME Miscellaneous API additions -- GstBitwriter: new generic bit writer API to complement the existing - bit reader - -- gst_buffer_new_wrapped_bytes() creates a wrap buffer from a GBytes - -- gst_caps_set_features_simple() sets a caps feature on all the - structures of a GstCaps - -- New GST_QUERY_BITRATE query: This allows determining from downstream - what the expected bitrate of a stream may be which is useful in - queue2 for setting time based limits when upstream does not provide - timing information. tsdemux, qtdemux and matroskademux have basic - support for this query on their sink pads. - -- elements: there is a new “Hardware” class specifier. Elements - interacting with hardware devices should specify this classifier in - their element factory class metadata. This is useful to advertise as - one might need to put such elements into READY state to test if the - hardware is present in the system for example. - -- protection: Add a new definition for unspecified system protection, - GST_PROTECTION_UNSPECIFIED_SYSTEM_ID - -- take functions for various mini objects that didn’t have them yet: - gst_query_take(), gst_message_take(), gst_tag_list_take(), - gst_buffer_list_take(). Unlike the various _replace() functions - _take() does not increase the reference count but takes ownership of - the mini object passed. - -- clear functions for various mini object types and GstObject which - unrefs the object or mini object (if non-NULL) and sets the variable - pointed to to NULL: gst_clear_structure(), gst_clear_tag_list(), - gst_clear_query(), gst_clear_message(), gst_clear_event(), - gst_clear_caps(), gst_clear_buffer_list(), gst_clear_buffer(), - gst_clear_mini_object(), gst_clear_object() - -- miniobject: new API gst_mini_object_add_parent() and - gst_mini_object_remove_parent() to set parent pointers on mini - objects to ensure correct writability: Every container of - miniobjects now needs to store itself as parent in the child object, - and remove itself again later. A mini object is then only writable - if there is at most one parent, that parent is writable itself, and - the reference count of the mini object is 1. GstBuffer (for - memories), GstBufferList (for buffers), GstSample (for caps, buffer, - bufferlist), and GstVideoOverlayComposition were updated - accordingly. Without this it was possible to have e.g. a buffer list - with a refcount of 2 used in two places at once that both modify the - same buffer with refcount 1 at the same time wrongly thinking it is - writable even though it’s really not. - -- poll: add API to watch for POLLPRI and stop treating POLLPRI as a - read. This is useful to wait for video4linux events which are - signalled via POLLPRI. - -- sample: new API to update the contents of a GstSample and make it - writable: gst_sample_set_buffer(), gst_sample_set_caps(), - gst_sample_set_segment(), gst_sample_set_info(), plus - gst_sample_is_writable() and gst_sample_make_writable(). This makes - it possible to reuse a sample object and avoid unnecessary memory - allocations, for example in appsink. - -- ClockIDs now keep a weak reference to underlying clock to avoid - crashes in basesink in corner cases where a clock goes away while - the ClockID is still in use, plus some new API - (gst_clock_id_get_clock(), gst_clock_id_uses_clock()) to check the - clock a ClockID is linked to. - -- The GstCheck unit test library gained a - fail_unless_equals_clocktime() convenience macro as well as some new - GstHarness API for for proposing meta APIs from the allocation - query: gst_harness_add_propose_allocation_meta(). ASSERT_CRITICAL() - checks in unit tests are now skipped if GStreamer was compiled with - GST_DISABLE_GLIB_CHECKS. - -- gst_audio_buffer_truncate() convenience function to truncate a raw - audio buffer - -- GstDiscoverer has support for caching the results of discovery in - the default cache directory. This can be enabled with the use-cache - property and is disabled by default. - -- GstMeta that are attached to GstBuffers are now always stored in the - order in which they were added. - -- Additional support for signalling ONVIF specific features were - added: the SEEK event can store a trickmode-interval now and support - for the Rate-Control and Frames RTSP headers was added to the RTSP - library. +- FIXME Miscellaneous performance and memory optimisations As always there have been many performance and memory usage improvements -across all components and modules. Some of them (such as dmabuf -import/export) have already been mentioned elsewhere so won’t be -repeated here. +across all components and modules. Some of them have already been +mentioned elsewhere so won’t be repeated here. The following list is only a small snapshot of some of the more interesting optimisations that haven’t been mentioned in other contexts yet: -- The GstVideoEncoder and GstVideoDecoder base classes now release the - STREAM_LOCK when pushing out buffers, which means (multi-threaded) - encoders and decoders can now receive and continue to process input - buffers whilst waiting for downstream elements in the pipeline to - process the buffer that was pushed out. This increases throughput - and reduces processing latency, also and especially for - hardware-accelerated encoder/decoder elements. - -- GstQueueArray has seen a few API additions - (gst_queue_array_peek_nth(), gst_queue_array_set_clear_func(), - gst_queue_array_clear()) so that it can be used in other places like - GstAdapter instead of a GList, which reduces allocations and - improves performance. - -- appsink now reuses the sample object in pull_sample() if possible - -- rtpsession only starts the RTCP thread when it’s actually needed now - -- udpsrc uses a buffer pool now and the GstUdpSrc object structure was - optimised for better cache performance +- FIXME GstPlayer -- API was added to fine-tune the synchronisation offset between - subtitles and video +- FIXME Miscellaneous changes -- As a result of moving to newer FFmpeg APIs, encoder and decoder - elements exposed by the GStreamer FFmpeg wrapper plugin (gst-libav) - may have seen possibly incompatible changes to property names and/or - types, and not all properties exposed might be functional. We are - still reviewing the new properties and aim to minimise breaking - changes at least for the most commonly-used properties, so please - report any issues you run into! +- FIXME OpenGL integration -- The OpenGL mixer elements have been moved from -bad to - gst-plugins-base (see above) - -- The Mesa GBM backend now supports headless mode - -- gloverlaycompositor: New OpenGL-based compositor element that - flattens any overlays from GstVideoOverlayCompositionMetas into the - video stream. - -- glalpha: New element that adds an alpha channel to a video stream. - The values of the alpha channel can either be set to a constant or - can be dynamically calculated via chroma keying. It is similar to - the existing alpha element but based on OpenGL. Calculations are - done in floating point so results may not be identical to the output - of the existing alpha element. - -- glupload: Implement direct dmabuf uploader, the idea being that some - GPUs (like the Vivante series) can actually perform the YUV->RGB - conversion internally, so no custom conversion shaders are needed. - To make use of this feature, we need an additional uploader that can - import DMABUF FDs and also directly pass the pixel format, relying - on the GPU to do the conversion. - -- The OpenGL library no longer restores the OpenGL viewport. This is a - performance optimization to not require performing multiple - expensive glGet*() function calls per frame. This affects any - application or plugin use of the following functions and objects: - - glcolorconvert library object (not the element) - - glviewconvert library object (not the element) - - gst_gl_framebuffer_draw_to_texture() - - custom GstGLWindow implementations +- FIXME Tracing framework and debugging improvements -- There is now a GDB PRETTY PRINTER FOR VARIOUS GSTREAMER TYPES: For - GstObject pointers the type and name is added, e.g. - 0x5555557e4110 [GstDecodeBin|decodebin0]. For GstMiniObject pointers - the object type is added, e.g. 0x7fffe001fc50 [GstBuffer]. For - GstClockTime and GstClockTimeDiff the time is also printed in human - readable form, e.g. 150116219955 [+0:02:30.116219955]. - -- GDB EXTENSION WITH TWO CUSTOM GDB COMMANDS gst-dot AND gst-print: - - - gst-dot creates dot files that a very close to what - GST_DEBUG_BIN_TO_DOT_FILE() produces, but object properties and - buffer contents such as codec-data in caps are not available. - - - gst-print produces high-level information about a GStreamer - object. This is currently limited to pads for GstElements and - events for the pads. The output may look like this: - -- gst_structure_to_string() now serialises the actual value of - pointers when serialising GstStructures instead of claiming they’re - NULL. This makes debug logging in various places less confusing, - because it’s clear now that structure fields actually hold valid - objects. Such object pointer values will never be deserialised - however. +- FIXME Tools -- gst-inspect-1.0 has coloured output now and will automatically use a - pager if the output does not fit on a page. This only works in a - UNIX environment and if the output is not piped, and on Windows 10 - build 16257 or newer. If you don’t like the colours you can disable - them by setting the GST_INSPECT_NO_COLORS=1 environment variable or - passing the --no-color command line option. +- FIXME GStreamer RTSP server -- Improved backlog handling when using TCP interleaved for data - transport. Before there was a fixed maximum size for backlog - messages, which was prone to deadlocks and made it difficult to - control memory usage with the watch backlog. The RTSP server now - limits queued TCP data messages to one per stream, moving queuing of - the data into the pipeline and leaving the RTSP connection - responsive to RTSP messages in both directions, preventing all those - problems. - -- Initial ULP Forward Error Correction support in rtspclientsink and - for RECORD mode in the server. - -- API to explicitly enable retransmission requests (RTX) - -- Lots of multicast-related fixes - -- rtsp-auth: Add support for parsing .htdigest files +- FIXME GStreamer VAAPI -- Support Wayland’s display for context sharing, so the application - can pass its own wl_display in order to be used for the VAAPI - display creation. - -- A lot of work to support new Intel hardware using media-driver as VA - backend. - -- For non-x86 devices, VAAPI display can instantiate, through DRM, - with no PCI bus. This enables the usage of libva-v4l2-request - driver. - -- Added support for XDG-shell protocol as wl_shell replacement which - is currently deprecated. This change add as dependency - wayland-protocol. - -- GstVaapiFilter, GstVaapiWindow, and GstVaapiDecoder classes now - inherit from GstObject, gaining all the GStreamer’s instrumentation - support. - -- The metadata now specifies the plugin as Hardware class. - -- H264 decoder is more stable with problematic streams. - -- In H265 decoder added support for profiles main-422-10 (P010_10LE), - main-444 (AYUV) and main-444-10 (Y410) - -- JPEG decoder handles dynamic resolution changes. - -- More specification adherence in H264 and H265 encoders. +- FIXME GStreamer OMX -- Add support of NV16 format to video encoders input. - -- Video decoders now handle the ALLOCATION query to tell upstream - about the number of buffers they require. Video encoders will also - use this query to adjust their number of allocated buffers - preventing starvation when using dynamic buffer mode. - -- The OMX_PERFORMANCE debug category has been renamed to OMX_API_TRACE - and can now be used to track a widder variety of interactions - between OMX and GStreamer. - -- Video encoders will now detect frame rate only changes and will - inform OMX about it rather than doing a full format reset. - -- Various Zynq UltraScale+ specific improvements: - - Video encoders are now able to import dmabuf from upstream. - - Support for HEVC range extension profiles and more AVC profiles. - - We can now request video encoders to generate an IDR using the - force key unit event. +- FIXME GStreamer Editing Services and NLE -- Added a gesdemux element, it is an auto pluggable element that - allows decoding edit list like files supported by GES - -- Added gessrc which wraps a GESTimeline as a standard source element - (implementing the ges protocol handler) - -- Added basic support for videorate::rate property potentially - allowing changing playback speed - -- Layer priority is now fully automatic and they should be moved with - the new ges_timeline_move_layer method, ges_layer_set_priority is - now deprecated. - -- Added a ges_timeline_element_get_layer_priority so we can simply get - all information about GESTimelineElement position in the timeline - -- GESVideoSource now auto orientates the images if it is defined in a - meta (overridable). - -- Added some PyGObject overrides to make the API more pythonic - -- The threading model has been made more explicit with safe guard to - make sure not thread safe APIs are not used from the wrong threads. - It is also now possible to properly handle in what thread the API - should be used. - -- Optimized GESClip and GESTrackElement creation - -- Added a way to compile out the old, unused and deprecated - GESPitiviFormatter - -- Re implemented the timeline editing API making it faster and making - the code much more maintainable - -- Simplified usage of nlecomposition outside GES by removing quirks in - it API usage and removing the need to treat it specially from an - application perspective. - -- ges-launch-1.0: - - - Added support to add titles to the timeline - - Enhance the help auto generating it from the code - -- Deprecate ges_timeline_load_from_uri as loading the timeline should - be done through a project now - -- MANY leaks have been plugged and the unit testsuite is now “leak - free” +- FIXME GStreamer validate -- Added an action type to verify the checksum of the sink last-sample - -- Added an include keyword to validate scenarios - -- Added the notion of variable in scenarios, with the set-vars keyword - -- Started adding support for “performance” like tests by allowing to - define the number of dropped buffers or the minimum buffer frequency - on a specific pad - -- Added a validateflow plugin which allows defining the data flow to - be seen on a particular pad and verifying that following runs match - the expectations - -- Added support for appsrc based test definition so we can instrument - the data pushed into the pipeline from scenarios - -- Added a mockdecryptor allowing adding tests with on encrypted files, - the element will potentially be instrumented with a validate - scenario - -- gst-validate-launcher: - - - Cleaned up output - - - Changed the default for “muting” tests as user doesn’t expect - hundreds of windows to show up when running the testsuite - - - Fixed the outputted xunit files to be compatible with GitLab - - - Added support to run tests on media files in push mode (using - pushfile://) - - - Added support for running inside gst-build - - - Added support for running ssim tests on rendered files - - - Added a way to simply define tests on pipelines through a simple - .json file - - - Added a python app to easily run python testsuite reusing all - the launcher features - - - Added flatpak knowledge so we can print backtrace even when - running from within flatpak - - - Added a way to automatically generated “known issues” - suppressions lines - - - Added a way to rerun tests to check if they are flaky and added - a way to tolerate tests known to be flaky - - - Add a way to output html log files +- FIXME GStreamer Python Bindings -- add binding for gst_pad_set_caps() - -- pygobject dependency requirement was bumped to >= 3.8 - -- new audiotestsrc, audioplot, and mixer plugin examples, and a - dynamic pipeline example +- FIXME GStreamer C# Bindings -- bindings for the GstWebRTC library +- FIXME GStreamer Rust Bindings -The GStreamer Rust bindings are now officially part of the GStreamer -project and are also maintained in the GStreamer GitLab. - -The releases will generally not be synchronized with the releases of -other GStreamer parts due to dependencies on other projects. - -Also unlike the other GStreamer libraries, the bindings will not commit -to full API stability but instead will follow the approach that is -generally taken by Rust projects, e.g.: - -1) 0.12.X will be completely API compatible with all other 0.12.Y - versions. -2) 0.12.X+1 will contain bugfixes and compatible new feature additions. -3) 0.13.0 will _not_ be backwards compatible with 0.12.X but projects - will be able to stay at 0.12.X without any problems as long as they - don’t need newer features. - -The current stable release is 0.12.2 and the next release series will be -0.13, probably around March 2019. - -At this point the bindings cover most of GStreamer core (except for most -notably GstAllocator and GstMemory), and most parts of the app, audio, -base, check, editing-services, gl, net. pbutils, player, rtsp, -rtsp-server, sdp, video and webrtc libraries. - -Also included is support for creating subclasses of the following types -and writing GStreamer plugins: - -- gst::Element -- gst::Bin and gst::Pipeline -- gst::URIHandler and gst::ChildProxy -- gst::Pad, gst::GhostPad -- gst_base::Aggregator and gst_base::AggregatorPad -- gst_base::BaseSrc and gst_base::BaseSink -- gst_base::BaseTransform - -Changes to 0.12.X since 0.12.0 - -Fixed - -- PTP clock constructor actually creates a PTP instead of NTP clock - -Added - -- Bindings for GStreamer Editing Services -- Bindings for GStreamer Check testing library -- Bindings for the encoding profile API (encodebin) - -- VideoFrame, VideoInfo, AudioInfo, StructureRef implements Send and - Sync now -- VideoFrame has a function to get the raw FFI pointer -- From impls from the Error/Success enums to the combined enums like - FlowReturn -- Bin-to-dot file functions were added to the Bin trait -- gst_base::Adapter implements SendUnique now -- More complete bindings for the gst_video::VideoOverlay interface, - especially - gst_video::is_video_overlay_prepare_window_handle_message() - -Changed - -- All references were updated from GitHub to freedesktop.org GitLab -- Fix various links in the README.md -- Link to the correct location for the documentation -- Remove GitLab badge as that only works with gitlab.com currently - -Changes in git master for 0.13 - -Fixed - -- gst::tag::Album is the album tag now instead of artist sortname - -Added - -- Subclassing infrastructure was moved directly into the bindings, - making the gst-plugin crate deprecated. This involves many API - changes but generally cleans up code and makes it more flexible. - Take a look at the gst-plugins-rs crate for various examples. - -- Bindings for CapsFeatures and Meta -- Bindings for - ParentBufferMeta,VideoMetaandVideoOverlayCompositionMeta` -- Bindings for VideoOverlayComposition and VideoOverlayRectangle -- Bindings for VideoTimeCode - -- UniqueFlowCombiner and UniqueAdapter wrappers that make use of the - Rust compile-time mutability checks and expose more API in a safe - way, and as a side-effect implement Sync and Send now - -- More complete bindings for Allocation Query -- pbutils functions for codec descriptions -- TagList::iter() for iterating over all tags while getting a single - value per tag. The old ::iter_tag_list() function was renamed to - ::iter_generic() and still provides access to each value for a tag -- Bus::iter() and Bus::iter_timed() iterators around the corresponding - ::pop\*() functions - -- serde serialization of Value can also handle Buffer now - -- Extensive comments to all examples with explanations -- Transmuxing example showing how to use typefind, multiqueue and - dynamic pads -- basic-tutorial-12 was ported and added - -Changed - -- Rust 1.31 is the minimum supported Rust version now -- Update to latest gir code generator and glib bindings - -- Functions returning e.g. gst::FlowReturn or other “combined” enums - were changed to return split enums like - Result to allow usage of the - standard Rust error handling. - -- MiniObject subclasses are now newtype wrappers around the underlying - GstRc wrapper. This does not change the API in any breaking - way for the current usages, but allows MiniObjects to also be - implemented in other crates and makes sure rustdoc places the - documentation in the right places. - -- BinExt extension trait was renamed to GstBinExt to prevent conflicts - with gtk::Bin if both are imported - -- Buffer::from_slice() can’t possible return None - -- Various clippy warnings +- FIXME GStreamer Rust Plugins -Like the GStreamer Rust bindings, the Rust plugins are now officially -part of the GStreamer project and are also maintained in the GStreamer -GitLab. - -In the 0.3.x versions this contained infrastructure for writing -GStreamer plugins in Rust, and a set of plugins. - -In git master that infrastructure was moved to the GLib and GStreamer -bindings directly, together with many other improvements that were made -possible by this, so the gst-plugins-rs repository only contains -GStreamer elements now. - -Elements included are: - -- Tutorials plugin: identity, rgb2gray and sinesrc with extensive - comments - -- rsaudioecho, a port of the audiofx element - -- rsfilesrc, rsfilesink - -- rsflvdemux, a FLV demuxer. Not feature-equivalent with flvdemux yet - -- threadshare plugin: ts-appsrc, ts-proxysrc/sink, ts-queue, ts-udpsrc - and ts-tcpclientsrc elements that use a fixed number of threads and - share them between instances. For more background about these - elements see Sebastian’s talk “When adding more threads adds more - problems - Thread-sharing between elements in GStreamer” at the - GStreamer Conference 2017. - -- rshttpsrc, a HTTP source around the hyper/reqwest Rust libraries. - Not feature-equivalent with souphttpsrc yet. - -- togglerecord, an element that allows to start/stop recording at any - time and keeps all audio/video streams in sync. - -- mccparse and mccenc, parsers and encoders for the MCC closed caption - file format. - -Changes to 0.3.X since 0.3.0 - -- All references were updated from GitHub to freedesktop.org GitLab -- Fix various links in the README.md -- Link to the correct location for the documentation - -Changes in git master for 0.4 - -- togglerecord: Switch to parking_lot crate for mutexes/condition - variables for lower overhead -- Merge threadshare plugin here -- New closedcaption plugin with mccparse and mccenc elements -- New identity element for the tutorials plugin - -- Register plugins statically in tests instead of relying on the - plugin loader to find the shared library in a specific place - -- Update to the latest API changes in the GLib and GStreamer bindings -- Update to the latest versions of all crates +- FIXME Build and Dependencies -- The MESON BUILD SYSTEM BUILD IS NOW FEATURE-COMPLETE (*) and it is - now the recommended build system on all platforms and also used by - Cerbero to build GStreamer on all platforms. The Autotools build is - scheduled to be removed in the next cycle. Developers who currently - use gst-uninstalled should move to gst-build. The build option - naming has been cleaned up and made consistent and there are now - feature options to enable/disable plugins and various other features - on a case-by-case basis. (*) with the exception of plugin docs which - will be handled differently in future +- The Autotools build system has finally been removed in favour of the + Meson build system. Developers who currently use gst-uninstalled + should move to gst-build. -- Symbol export in libraries is now controlled via explicit exports - using symbol visibility or export defines where supported, to ensure - consistency across all platforms. This also allows libraries to have - exports that vary based on detected platform features and configure - options as is the case with the GStreamer OpenGL integration library - for example. A few symbols that had been exported by accident in - earlier versions may no longer be exported. These symbols will not - have had declarations in any public header files then though and - would not have been usable. +- API and plugin documentation are no longer built with gtk_doc. The + gtk_doc documentation has been removed in favour of a new unified + documentation module built with hotdoc. The intention is to + distribute the generated documentation in form of tarballs alongside + releases. -- The GStreamer FFmpeg wrapper plugin (gst-libav) now depends on - FFmpeg 4.x and uses the new FFmpeg 4.x API and stopped relying on - ancient API that was removed with the FFmpeg 4.x release. This means - that it is no longer possible to build this module against an older - system-provided FFmpeg 3.x version. Use the internal FFmpeg 4.x copy - instead if you build using autotools, or use gst-libav 1.14.x - instead which targets the FFmpeg 3.x API and _should_ work fine in - combination with a newer GStreamer. It’s difficult for us to support - both old and new FFmpeg APIs at the same time, apologies for any - inconvenience caused. - -- Hardware-accelerated Nvidia video encoder/decoder plugins nvdec and - nvenc can be built against CUDA Toolkit versions 9 and 10.0 now. The - dynlink interface has been dropped since it’s deprecated in 10.0. - -- The (optional) OpenCV requirement has been bumped to >= 3.0.0 and - the plugin can also be built against OpenCV 4.x now. - -- New sctp plugin based on usrsctp (for WebRTC data channels) +- FIXME Cerbero @@ -1172,221 +175,66 @@ Windows, Android, iOS and macOS. Cerbero has seen a number of improvements: -- Cerbero has been ported to Python 3 and requires Python 3.5 or newer - now - -- Source tarballs are now protected by checksums in the recipes to - guard against download errors and malicious takeover of projects or - websites. In addition, downloads are only allowed via secure - transports now and plain HTTP, FTP and git:// transports are not - allowed anymore. - -- There is now a new fetch-bootstrap command which downloads sources - required for bootstrapping, with an optional --build-tools-only - argument to match the bootstrap --build-tools-only command. - -- The bootstrap, build, package and bundle-source commands gained a - new --offline switch that ensures that only sources from the cache - are used and never downloaded via the network. This is useful in - combination with the fetch and fetch-bootstrap commands that acquire - sources ahead of time before any build steps are executed. This - allows more control over the sources used and when sources are - updated, and is particularly useful for build environments that - don’t have network access. - -- bootstrap --assume-yes will automatically say ‘yes’ to any - interactive prompts during the bootstrap stage, such as those from - apt-get or yum. - -- bootstrap --system-only will only bootstrap the system without build - tools. - -- Manifest support: The build manifest can be used in continuous - integration (CI) systems to fixate the Git revision of certain - projects so that all builds of a pipeline are on the same reference. - This is used in GStreamer’s gitlab CI for example. It can also be - used in order to re-produce a specific build. To set a manifest, you - can set manifest = 'my_manifest.xml' in your configuration file, or - use the --manifest command line option. The command line option will - take precedence over anything specific in the configuration file. - -- The new build-deps command can be used to build only the - dependencies of a recipe, without the recipe itself. - -- new --list-variants command to list available variants - -- variants can now be set on the command line via the -v option as a - comma-separated list. This overrides any variants set in any - configuration files. - -- new qt5, intelmsdk and nvidia variants for enabling Qt5 and hardware - codec support. See the Enabling Optional Features with Variants - section in the Cerbero documentation for more details how to enable - and use these variants. - -- A new -t / --timestamp command line switch makes commands print - timestamps +- FIXME Platform-specific changes and improvements Android -- toolchain: update compiler to clang and NDKr18. NDK r18 removed the - armv5 target and only has Android platforms that target at least - armv7 so the armv5 target is not useful anymore. - -- The way that GIO modules are named has changed due to upstream GLib - natively adding support for loading static GIO modules. This means - that any GStreamer application using gnutls for SSL/TLS on the - Android or iOS platforms (or any other setup using static libraries) - will fail to link looking for the g_io_module_gnutls_load_static() - function. The new function name is now - g_io_gnutls_load(gpointer data). data can be NULL for a static - library. Look at this commit for the necessary change in the - examples. - -- various build issues on Android have been fixed. +- FIXME macOS and iOS -- various build issues on iOS have been fixed. - -- the minimum required iOS version is now 9.0. The difference in - adoption between 8.0 and 9.0 is 0.1% and the bump to 9.0 fixes some - build issues. - -- The way that GIO modules are named has changed due to upstream GLib - natively adding support for loading static GIO modules. This means - that any GStreamer application using gnutls for SSL/TLS on the - Android or iOS platforms (or any other setup using static libraries) - will fail to link looking for the g_io_module_gnutls_load_static() - function. The new function name is now - g_io_gnutls_load(gpointer data). data can be NULL for a static - library. Look at this commit for the necessary change in the - examples. +- FIXME Windows -- The webrtcdsp element is shipped again as part of the Windows binary - packages, the build system issue has been resolved. +- toolchain upgrade -- ‘Inconsistent DLL linkage’ warnings when building with MSVC have - been fixed - -- Hardware-accelerated Nvidia video encoder/decoder plugins nvdec and - nvenc build on Windows now, also with MSVC and using Meson. - -- The ksvideosrc camera capture plugin supports 16-bit grayscale video - now - -- The wasapisrc audio capture element implements loopback recording - from another output device or sink - -- wasapisink recover from low buffer levels in shared mode and some - exclusive mode fixes - -- dshowsrc now implements the GstDeviceMonitor interface +- FIXME Contributors -Aaron Boxer, Aleix Conchillo Flaqué, Alessandro Decina, Alexandru Băluț, -Alex Ashley, Alexey Chernov, Alicia Boya García, Amit Pandya, Andoni -Morales Alastruey, Andreas Frisch, Andre McCurdy, Andy Green, Anthony -Violo, Antoine Jacoutot, Antonio Ospite, Arun Raghavan, Aurelien Jarno, -Aurélien Zanelli, ayaka, Bananahemic, Bastian Köcher, Branko Subasic, -Brendan Shanks, Carlos Rafael Giani, Charlie Turner, Christoph Reiter, -Corentin Noël, Daeseok Youn, Damian Vicino, Dan Kegel, Daniel Drake, -Daniel Klamt, Danilo Spinella, Dardo D Kleiner, David Ing, David -Svensson Fors, Devarsh Thakkar, Dimitrios Katsaros, Edward Hervey, -Emilio Pozuelo Monfort, Enrique Ocaña González, Erlend Eriksen, Ezequiel -Garcia, Fabien Dessenne, Fabrizio Gennari, Florent Thiéry, Francisco -Velazquez, Freyr666, Garima Gaur, Gary Bisson, George Kiagiadakis, Georg -Lippitsch, Georg Ottinger, Geunsik Lim, Göran Jönsson, Guillaume -Desmottes, H1Gdev, Haihao Xiang, Haihua Hu, Harshad Khedkar, Havard -Graff, He Junyan, Hoonhee Lee, Hosang Lee, Hyunjun Ko, Ilya Smelykh, -Ingo Randolf, Iñigo Huguet, Jakub Adam, James Stevenson, Jan Alexander -Steffens, Jan Schmidt, Jerome Laheurte, Jimmy Ohn, Joakim Johansson, -Jochen Henneberg, Johan Bjäreholt, John-Mark Bell, John Bassett, John -Nikolaides, Jonathan Karlsson, Jonny Lamb, Jordan Petridis, Josep Torra, -Joshua M. Doe, Jos van Egmond, Juan Navarro, Julian Bouzas, Jun Xie, -Junyan He, Justin Kim, Kai Kang, Kim Tae Soo, Kirill Marinushkin, Kyrylo -Polezhaiev, Lars Petter Endresen, Linus Svensson, Louis-Francis -Ratté-Boulianne, Lucas Stach, Luis de Bethencourt, Luz Paz, Lyon Wang, -Maciej Wolny, Marc-André Lureau, Marc Leeman, Marco Trevisan (Treviño), -Marcos Kintschner, Marian Mihailescu, Marinus Schraal, Mark Nauwelaerts, -Marouen Ghodhbane, Martin Kelly, Matej Knopp, Mathieu Duponchelle, -Matteo Valdina, Matthew Waters, Matthias Fend, memeka, Michael Drake, -Michael Gruner, Michael Olbrich, Michael Tretter, Miguel Paris, Mike -Wey, Mikhail Fludkov, Naveen Cherukuri, Nicola Murino, Nicolas Dufresne, -Niels De Graef, Nirbheek Chauhan, Norbert Wesp, Ognyan Tonchev, Olivier -Crête, Omar Akkila, Pat DeSantis, Patricia Muscalu, Patrick Radizi, -Patrik Nilsson, Paul Kocialkowski, Per Forlin, Peter Körner, Peter -Seiderer, Petr Kulhavy, Philippe Normand, Philippe Renon, Philipp Zabel, -Pierre Labastie, Piotr Drąg, Roland Jon, Roman Sivriver, Roman Shpuntov, -Rosen Penev, Russel Winder, Sam Gigliotti, Santiago Carot-Nemesio, -Sean-Der, Sebastian Dröge, Seungha Yang, Shi Yan, Sjoerd Simons, Snir -Sheriber, Song Bing, Soon, Thean Siew, Sreerenj Balachandran, Stefan -Ringel, Stephane Cerveau, Stian Selnes, Suhas Nayak, Takeshi Sato, -Thiago Santos, Thibault Saunier, Thomas Bluemel, Tianhao Liu, -Tim-Philipp Müller, Tobias Ronge, Tomasz Andrzejak, Tomislav Tustonić, -U. Artie Eoff, Ulf Olsson, Varunkumar Allagadapa, Víctor Guzmán, Víctor -Manuel Jáquez Leal, Vincenzo Bono, Vineeth T M, Vivia Nikolaidou, Wang -Fei, wangzq, Whoopie, Wim Taymans, Wind Yuan, Wonchul Lee, Xabier -Rodriguez Calvar, Xavier Claessens, Haihao Xiang, Yacine Bandou, -Yeongjin Jeong, Yuji Kuwabara, Zeeshan Ali, +- FIXME … and many others who have contributed bug reports, translations, sent suggestions or helped testing. -Stable 1.16 branch +Stable 1.18 branch -After the 1.16.0 release there will be several 1.16.x bug-fix releases +After the 1.18.0 release there will be several 1.18.x bug-fix releases which will contain bug fixes which have been deemed suitable for a stable branch, but no new features or intrusive changes will be added to -a bug-fix release usually. The 1.16.x bug-fix releases will be made from -the git 1.16 branch, which is a stable branch. +a bug-fix release usually. The 1.18.x bug-fix releases will be made from +the git 1.18 branch, which will be a stable branch. -1.16.0 +1.18.0 -1.16.0 was released on 19 April 2019. +1.18.0 has not been released yet. Known Issues -- possibly breaking/incompatible changes to properties of wrapped - FFmpeg decoders and encoders (see above). - -- The way that GIO modules are named has changed due to upstream GLib - natively adding support for loading static GIO modules. This means - that any GStreamer application using gnutls for SSL/TLS on the - Android or iOS platforms (or any other setup using static libraries) - will fail to link looking for the g_io_module_gnutls_load_static() - function. The new function name is now - g_io_gnutls_load(gpointer data). See Android/iOS sections above for - further details. +- FIXME -Schedule for 1.18 +Schedule for 1.20 -Our next major feature release will be 1.18, and 1.17 will be the -unstable development version leading up to the stable 1.18 release. The -development of 1.17/1.18 will happen in the git master branch. +Our next major feature release will be 1.20, and 1.19 will be the +unstable development version leading up to the stable 1.20 release. The +development of 1.19/1.20 will happen in the git master branch. -The plan for the 1.18 development cycle is yet to be confirmed, but it -is possible that the next cycle will be a short one in which case -feature freeze would be perhaps around August 2019 with a new 1.18 -stable release in September. +The plan for the 1.20 development cycle is yet to be confirmed. -1.18 will be backwards-compatible to the stable 1.16, 1.14, 1.12, 1.10, -1.8, 1.6, 1.4, 1.2 and 1.0 release series. +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. ------------------------------------------------------------------------ _These release notes have been prepared by Tim-Philipp Müller with_ -_contributions from Sebastian Dröge, Guillaume Desmottes, Matthew -Waters, _ _Thibault Saunier, and Víctor Manuel Jáquez Leal._ +_contributions from … (FIXME)_ _License: CC BY-SA 4.0_ diff --git a/RELEASE b/RELEASE index d43afe784a..2ddc70dc0f 100644 --- a/RELEASE +++ b/RELEASE @@ -1,18 +1,15 @@ -This is GStreamer gst-plugins-bad 1.17.0.1. +This is GStreamer gst-plugins-bad 1.17.1. -The GStreamer team is thrilled to announce a new major feature release in the -stable 1.0 API series of your favourite cross-platform multimedia framework! +GStreamer 1.17 is the development branch leading up to the next major +stable version which will be 1.18. -As always, this release is again packed with new features, bug fixes and -other improvements. - -The 1.16 release series adds new features on top of the 1.14 series and is +The 1.17 development series adds new features on top of the 1.16 series and is part of the API and ABI-stable 1.x release series of the GStreamer multimedia framework. Full release notes will one day be found at: - https://gstreamer.freedesktop.org/releases/1.16/ + https://gstreamer.freedesktop.org/releases/1.18/ Binaries for Android, iOS, Mac OS X and Windows will usually be provided shortly after the release. @@ -60,7 +57,7 @@ You can find source releases of gstreamer in the download directory: https://gstreamer.freedesktop.org/src/gstreamer/ The git repository and details how to clone it can be found at -https://cgit.freedesktop.org/gstreamer/gstreamer/ +https://gitlab.freedesktop.org/gstreamer/ ==== Homepage ==== diff --git a/docs/plugins/gst_plugins_cache.json b/docs/plugins/gst_plugins_cache.json index a50f6a45cd..a25935b1e1 100644 --- a/docs/plugins/gst_plugins_cache.json +++ b/docs/plugins/gst_plugins_cache.json @@ -72,7 +72,7 @@ "filename": "gstaccurip", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -153,7 +153,7 @@ "filename": "gstadpcmdec", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -284,7 +284,7 @@ ] } }, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -348,7 +348,7 @@ "filename": "gstaiff", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -1242,7 +1242,7 @@ "filename": "gstasfmux", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -1323,7 +1323,7 @@ "filename": "gstassrender", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -1661,7 +1661,7 @@ "filename": "gstaudiolatency", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -1795,7 +1795,7 @@ ] } }, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -2102,7 +2102,7 @@ ] } }, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -2237,7 +2237,7 @@ "filename": "gstautoconvert", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -2331,7 +2331,7 @@ "filename": "gstbayer", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -2761,7 +2761,7 @@ "filename": "gstbluez", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -2846,7 +2846,7 @@ "filename": "gstbs2b", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -2970,7 +2970,7 @@ "filename": "gstbz2", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -3707,7 +3707,7 @@ ] } }, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -3787,7 +3787,7 @@ "filename": "gstchromaprint", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -4182,7 +4182,7 @@ ] } }, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -4382,7 +4382,7 @@ ] } }, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -4554,7 +4554,7 @@ ] } }, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -6826,7 +6826,7 @@ ] } }, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -7450,7 +7450,7 @@ ] } }, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -7517,7 +7517,7 @@ "filename": "gstde265", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -8999,7 +8999,7 @@ ] } }, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -10790,7 +10790,7 @@ ] } }, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -11451,7 +11451,7 @@ ] } }, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -11544,7 +11544,7 @@ "filename": "gstdtsdec", "license": "GPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -13443,7 +13443,7 @@ ] } }, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -13511,7 +13511,7 @@ "filename": "gstdvbsubenc", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -13594,7 +13594,7 @@ "filename": "gstdvbsuboverlay", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -13637,7 +13637,7 @@ "filename": "gstdvdspu", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -13843,7 +13843,7 @@ ] } }, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -13924,7 +13924,7 @@ "filename": "gstfaad", "license": "GPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -14060,7 +14060,7 @@ "filename": "gstfaceoverlay", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -14290,7 +14290,7 @@ "filename": "gstfbdevsink", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -14467,7 +14467,7 @@ "filename": "gstfdkaac", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -14505,7 +14505,7 @@ "filename": "gstfestival", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -14749,7 +14749,7 @@ ] } }, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -14851,7 +14851,7 @@ "filename": "gstflite", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -14955,7 +14955,7 @@ "filename": "gstfluidsynthmidi", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -15067,7 +15067,7 @@ "filename": "gstfreeverb", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -26435,7 +26435,7 @@ "filename": "gstfrei0r", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -26865,7 +26865,7 @@ "filename": "gstgaudieffects", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -26971,7 +26971,7 @@ "filename": "gstgdp", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -28641,7 +28641,7 @@ ] } }, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -28679,7 +28679,7 @@ "filename": "gstgme", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -28842,7 +28842,7 @@ "filename": "gstgsm", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -29355,7 +29355,7 @@ "filename": "gstid3tag", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -30466,7 +30466,7 @@ ] } }, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -30925,7 +30925,7 @@ "filename": "gstivfparse", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -31088,7 +31088,7 @@ "filename": "gstjp2kdecimator", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -31171,7 +31171,7 @@ "filename": "gstjpegformat", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -31538,7 +31538,7 @@ "filename": "gstkate", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -31908,7 +31908,7 @@ "filename": "gstkms", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -32700,7 +32700,7 @@ "filename": "gstladspa", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -33062,7 +33062,7 @@ ] } }, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -213071,7 +213071,7 @@ "filename": "gstmicrodns", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -213109,7 +213109,7 @@ "filename": "gstmidi", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -213227,7 +213227,7 @@ "filename": "gstmms", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -213423,7 +213423,7 @@ "filename": "gstmodplug", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -214159,7 +214159,7 @@ ] } }, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -214253,7 +214253,7 @@ "filename": "gstmpegpsdemux", "license": "unknown", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -214305,7 +214305,7 @@ "filename": "gstmpegpsmux", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -214576,7 +214576,7 @@ "filename": "gstmpegtsdemux", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -215056,7 +215056,7 @@ } } }, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -215269,7 +215269,7 @@ ] } }, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -215307,7 +215307,7 @@ "filename": "gstmusepack", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -215568,7 +215568,7 @@ } } }, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -215783,7 +215783,7 @@ "filename": "gstneonhttpsrc", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -215980,7 +215980,7 @@ ] } }, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -215991,7 +215991,7 @@ "filename": "gstnvcodec", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -216057,7 +216057,7 @@ "filename": "gstofa", "license": "GPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -216613,7 +216613,7 @@ "filename": "gstopenal", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -219246,7 +219246,7 @@ "filename": "gstopenexr", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -219951,7 +219951,7 @@ ] } }, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -220150,7 +220150,7 @@ ] } }, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -220284,7 +220284,7 @@ ] } }, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -220337,7 +220337,7 @@ "filename": "gstopusparse", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -220509,7 +220509,7 @@ "filename": "gstpcapparse", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -220632,7 +220632,7 @@ "filename": "gstpnm", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -220872,7 +220872,7 @@ "filename": "gstremovesilence", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -220985,7 +220985,7 @@ "filename": "gstresindvd", "license": "GPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -221228,7 +221228,7 @@ "filename": "gstrfbsrc", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -222018,7 +222018,7 @@ ] } }, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -222266,7 +222266,7 @@ "filename": "gstrsvg", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -222592,7 +222592,7 @@ "filename": "gstrtmp", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -223641,7 +223641,7 @@ "filename": "gstrtpmanagerbad", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -223771,7 +223771,7 @@ "filename": "gstrtponvif", "license": "unknown", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -223934,7 +223934,7 @@ "filename": "gstsbc", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -224131,7 +224131,7 @@ "filename": "gstsctp", "license": "BSD", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -224381,7 +224381,7 @@ "filename": "gstsdpelem", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -224447,7 +224447,7 @@ "filename": "gstsegmentclip", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -224853,7 +224853,7 @@ "filename": "gstshm", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -225016,7 +225016,7 @@ "filename": "gstsiren", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -225122,7 +225122,7 @@ "filename": "gstsmooth", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -225265,7 +225265,7 @@ "filename": "gstsmoothstreaming", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -225303,7 +225303,7 @@ "filename": "gstsndfile", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -225441,7 +225441,7 @@ "filename": "gstsoundtouch", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -225748,7 +225748,7 @@ "filename": "gstspandsp", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -225802,7 +225802,7 @@ "filename": "gstspeed", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -227674,7 +227674,7 @@ ] } }, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -228040,7 +228040,7 @@ ] } }, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -228164,7 +228164,7 @@ "filename": "gstsubenc", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -228260,7 +228260,7 @@ "filename": "gstswitchbin", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -228364,7 +228364,7 @@ "filename": "gstteletext", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -228798,7 +228798,7 @@ ] } }, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -229420,7 +229420,7 @@ "filename": "gsttranscode", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -229489,7 +229489,7 @@ "filename": "gstttmlsubs", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -230327,7 +230327,7 @@ ] } }, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -230338,7 +230338,7 @@ "filename": "gstv4l2codecs", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -230538,7 +230538,7 @@ "filename": "gstvideoframe_audiolevel", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -231009,7 +231009,7 @@ "filename": "gstvideoparsersbad", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -231393,7 +231393,7 @@ "filename": "gstvideosignal", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -231446,7 +231446,7 @@ "filename": "gstvmnc", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -231554,7 +231554,7 @@ "filename": "gstvoaacenc", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -231716,7 +231716,7 @@ ] } }, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -232607,7 +232607,7 @@ "filename": "gstwaylandsink", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -232842,7 +232842,7 @@ ] } }, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -233445,7 +233445,7 @@ } } }, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -234030,7 +234030,7 @@ ] } }, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -234481,7 +234481,7 @@ ] } }, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" @@ -234609,7 +234609,7 @@ "filename": "gstzbar", "license": "LGPL", "other-types": {}, - "package": "GStreamer Bad Plug-ins git", + "package": "GStreamer Bad Plug-ins", "source": "gst-plugins-bad", "tracers": {}, "url": "Unknown package origin" diff --git a/gst-plugins-bad.doap b/gst-plugins-bad.doap index c7009d1425..395a6be38b 100644 --- a/gst-plugins-bad.doap +++ b/gst-plugins-bad.doap @@ -19,7 +19,7 @@ something - be it a good code review, some documentation, a set of tests, a real live maintainer, or some actual wide use. - + C @@ -33,6 +33,16 @@ real live maintainer, or some actual wide use. + + + 1.17.1 + master + + 2020-06-19 + + + + 1.16.0 diff --git a/meson.build b/meson.build index 570f651ad7..a6ac4a2044 100644 --- a/meson.build +++ b/meson.build @@ -1,5 +1,5 @@ project('gst-plugins-bad', 'c', 'cpp', - version : '1.17.0.1', + version : '1.17.1', meson_version : '>= 0.49', default_options : [ 'warning_level=1', 'buildtype=debugoptimized' ]) @@ -175,7 +175,7 @@ cdata.set('SIZEOF_VOIDP', cc.sizeof('void*')) cdata.set_quoted('VERSION', gst_version) cdata.set_quoted('PACKAGE', 'gst-plugins-bad') cdata.set_quoted('PACKAGE_VERSION', gst_version) -cdata.set_quoted('PACKAGE_BUGREPORT', 'http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer') +cdata.set_quoted('PACKAGE_BUGREPORT', 'https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/new') cdata.set_quoted('PACKAGE_NAME', 'GStreamer Bad Plug-ins') cdata.set_quoted('GETTEXT_PACKAGE', 'gst-plugins-bad-1.0') cdata.set_quoted('GST_API_VERSION', api_version)