From ce937bcb21412d7b3539a2da0509cc96260562f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= Date: Thu, 23 Sep 2021 01:33:08 +0100 Subject: Release 1.19.2 --- ChangeLog | 1084 +++++++++++++++++++++++++++++++++++++++++++++++++ NEWS | 25 +- RELEASE | 2 +- gst-plugins-base.doap | 10 + meson.build | 2 +- 5 files changed, 1110 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index b60096242..889ea4b67 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,1087 @@ +=== release 1.19.2 === + +2021-09-23 01:33:08 +0100 Tim-Philipp Müller + + * ChangeLog: + * NEWS: + * RELEASE: + * gst-plugins-base.doap: + * meson.build: + Release 1.19.2 + +2021-09-21 22:39:46 +0100 Tim-Philipp Müller + + * gst-libs/gst/pbutils/codec-utils.h: + pbutils: codec-utils: fix g-ir-scanner warning + Warning: GstPbutils: gst_codec_utils_h264_get_profile_flags_level: + unknown parameter 'codec_data' in documentation comment, should be 'codecs_data + Part-of: + +2021-08-24 15:27:32 -0400 Nicolas Dufresne + + * ext/alsa/gstalsasink.c: + alsasink: Allow stop() function to happen during failing writes + In ALSA, there is possible temporary failures that may require a retry, + though in certain situation, this may leak to the write() function + holding on a lock forever preventing the pipeline from going to pause + or stop. Fix this by shortly dropping the lock between retries. + Part-of: + +2021-08-24 15:26:12 -0400 Nicolas Dufresne + + * ext/alsa/gstalsasink.c: + alsasink: Improve logging in write() function + This moves the "written X frames" lower so that we don't trace + confusing negative values on errors and add the error code in the + "Write error" log. + Part-of: + +2021-09-10 15:10:46 +0300 Sebastian Dröge + + * gst-libs/gst/video/gstvideodecoder.c: + * gst-libs/gst/video/gstvideodecoder.h: + * gst-libs/gst/video/meson.build: + videodecoder: Add properties to automatically request sync points and vfunc to allow subclasses to handle packet loss / missing data + Subclasses could use the new vfunc to activate packet loss concealment, + for example. + Part-of: + +2021-09-10 16:12:51 +0200 Havard Graff + + * gst-libs/gst/video/gstvideodecoder.c: + videodecoder: Fix min-force-key-unit-interval logic and logging + The new keyframe is needed when the deadline of the buffer has exeeded + the waiting time, not while it is within it. + Also, since we look at the deadline of the frame, log that instead of PTS. + Part-of: + +2021-08-18 19:40:55 -0400 Olivier Crête + + * gst-libs/gst/rtp/gstrtpbasepayload.c: + * gst-libs/gst/rtp/gstrtphdrext.c: + * gst-libs/gst/rtp/gstrtphdrext.h: + * tests/check/libs/rtpdummyhdrextimpl.c: + * tests/check/libs/rtphdrext.c: + rtphdrext: Make write function return a signed value + Since the return value is documented to possibly be smaller than 0, + then it needs to be signed. + Part-of: + +2021-06-16 15:07:13 -0400 Olivier Crête + + * tests/check/elements/videorate.c: + videorate: Add unit test for closing a segment and opening a separate one + Part-of: + +2021-06-16 15:06:57 -0400 Olivier Crête + + * gst/videorate/gstvideorate.c: + videorate: Drop incoming buffers that are outside of the segment + Part-of: + +2020-07-24 17:41:57 -0400 Olivier Crête + + * gst/videorate/gstvideorate.c: + * tests/check/elements/videorate.c: + videorate: Only "close" the segment if it is discontinous + Otherwise, it will drop valid buffers on a simple segment update + Part-of: + +2020-07-24 17:38:58 -0400 Olivier Crête + + * tests/check/elements/videorate.c: + videorate: Add test for segment update + Continue as-is on segment update. + Part-of: + +2020-07-24 16:35:04 -0400 Olivier Crête + + * gst/videorate/gstvideorate.c: + videorate: Update the base time on segment updates + Dropping it to 0 makes videorate push buffers from timestamp 0 again. + Part-of: + +2021-09-12 10:07:49 +0100 Philippe Normand + + * gst-libs/gst/pbutils/gstdiscoverer.c: + discoverer: Prevent stream tags from leaking in global tags + The PrivateStream should keep track of stream tags only. Likewise, the + GstDiscovererInfo should keep track of global tags only. + This patch fixes the issue where the discoverer would report duplicated tag + titles, especially for Matroska media files. The Matroska demuxer emits + correctly-scoped tags, but downstream was making no distinction of them. + Fixes #598, #836, https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/827 + Part-of: + +2021-09-09 15:44:55 +1000 Matthew Waters + + * gst-libs/gst/gl/glprototypes/buffer_storage.h: + gl/buffer_storage: re-enable GL_ARB_buffer_storage + The extension version doesn't have the ARB suffix. + Part-of: + +2021-09-07 13:55:08 +0200 Tobias Ronge + + * gst-libs/gst/rtsp/gstrtspconnection.c: + rtspconnection: Only reset timeout when socket is unused + After sending or retrieving data, gstrtspconnection resets the socket's + timeout to 0 (infinite). This could cause problems if sending and + receiving at the same time. For example, if RTCP data is sent from the + streaming thread while gstrtspsrc is already retrieving data. + With this patch, timeout is only reset to 0 if there is no other + thread using the socket. + Part-of: + +2021-09-02 11:55:09 +0200 Ludvig Rappe + + * gst-libs/gst/pbutils/codec-utils.c: + * tests/check/libs/pbutils.c: + pbutils: Add mjpg to MIME codecs + Part-of: + +2021-08-01 18:20:06 +0200 Mathieu Duponchelle + + * gst/playback/gstdecodebin3-parse.c: + decodebin3: fix unblocking on input gap events + Initial gap events should not be discarded on the input streams, + but instead cause unblocking just as buffers do. + Part-of: + +2021-06-24 16:00:03 +0100 Philippe Normand + + * gst/playback/gstparsebin.c: + parsebin: Guess subtitle/ caps as text streams + The subtitles in ogg/kate are identified using subtitle/ caps names. + Part-of: + +2021-08-31 15:31:23 +1000 Matthew Waters + + * gst-libs/gst/rtp/gstrtcpbuffer.c: + * gst-libs/gst/rtp/gstrtcpbuffer.h: + * tests/check/libs/rtp.c: + rtp: add some additional rtcp sdes values + Matches the current list at + https://www.iana.org/assignments/rtp-parameters/rtp-parameters.xhtml#rtp-parameters-5 + as of 2021-September. + Part-of: + +2021-08-25 17:03:49 +0200 Ludvig Rappe + + * gst-libs/gst/pbutils/codec-utils.c: + * gst-libs/gst/pbutils/codec-utils.h: + * tests/check/libs/pbutils.c: + pbutils: Add function to convert caps to MIME codec + Part-of: + +2021-08-25 17:01:19 +0200 Ludvig Rappe + + * gst-libs/gst/pbutils/codec-utils.c: + * gst-libs/gst/pbutils/codec-utils.h: + * tests/check/libs/pbutils.c: + pbutils: Add function for parsing H.264 extradata + Part-of: + +2021-08-24 18:14:22 +0200 Olivier Blin + + * gst-libs/gst/gl/egl/gsteglimage.c: + eglimage: fix redefinition of EGLuint64KHR + It is already defined in gst/gl/egl/gstegl.h + Part-of: + +2021-08-05 19:59:38 +0900 Seungha Yang + + * gst-libs/gst/video/video-converter.c: + * gst-libs/gst/video/video-orc-dist.c: + * gst-libs/gst/video/video-orc-dist.h: + * gst-libs/gst/video/video-orc.orc: + video-converter: Add support for A420 to RGB fast path + Add fast path for A420 -> RGB format conversion + Part-of: + +2021-07-19 22:11:41 +0900 Seungha Yang + + * gst/compositor/blend.c: + compositor: Fix crash while drawing background and/or blending for subsampled YUV + Fix crash caused by out-of-bounds memory accesses when drawing + background and/or blending. This fix is conceptually identical to the + approach as the commit of 8ff5079e5eef37b9bd5b212350f0cefbd9546b1b + Part-of: + +2021-08-15 01:27:39 +0200 Mathieu Duponchelle + + * gst-libs/gst/pbutils/encoding-profile.c: + encoding-profile: ignore more encoding private fields + Part-of: + +2021-08-09 21:24:34 -0400 Thibault Saunier + + * gst/encoding/gstencodebasebin.c: + * gst/encoding/gstsmartencoder.c: + smartencoder: Respect user `stream-format` when specified + Part-of: + +2021-08-10 02:09:09 +0200 Mathieu Duponchelle + + * gst/encoding/gstencodebasebin.c: + * gst/encoding/gstsmartencoder.c: + * gst/encoding/gstsmartencoder.h: + smartencoder: clean up and extend accepted formats + * Add support for H265 + * Don't overwrite original codec_data / streamheader in the output + caps, but instead allow them to change and send them to the + combiner at the right moment: encoder caps, reencoded GOP, + original caps, original GOP(s), and potentially encoder caps + and rencoded last GOP. + * For H264 / H265, force usage of a format with inband SPS / PPS + (avc3 / hev1), this is cleaner than misadvertising avc1, hvc1 and + some muxers like mp4mux will actually advertise both differently. + Unfortunately, while mp4 supports updating the codec_data and using + avc1 with no in-band SPS / PPS updates, it turns out some decoders + (eg chrome / firefox) don't handle this particularly well and stop + decoding after the reencoded GOP. We could expose a switch to + force usage of avc1 / hvc1 nevertheless, but for now stick to + requiring that the parser output SPS / PPS in-band with + config-interval=-1 (that has not changed) + Part-of: + +2021-08-04 00:51:24 +0900 Seungha Yang + + * docs/plugins/gst_plugins_cache.json: + * gst/compositor/compositor.c: + * gst/compositor/compositor.h: + compositor: Add "max-threads" property + Adding new property for user to be able to set expected the maximum + number of blend task threads. This can be useful in case that user + wants to restrict the number of parallel task runners for system + resource management or debugging/development purpose. + Part-of: + +2021-07-01 12:41:11 +0300 Sebastian Dröge + + * gst-libs/gst/pbutils/descriptions.c: + * gst-libs/gst/pbutils/descriptions.h: + pbutils: Expose functions for getting a file extension for caps and flags for describing the format of the caps + This information was available internally already but not available from + the outside. + Part-of: + +2021-08-04 10:06:02 +0300 Sebastian Dröge + + * gst/playback/gstplaybin2.c: + * gst/playback/gsturidecodebin.c: + playbin/uridecodebin: Emit source-setup signal early before doing the scheduling query + Some elements will require the source to be set up properly before the + scheduling query returns useful results, e.g. appsrc and giostreamsrc. + Part-of: + +2021-06-10 00:55:23 -0700 Devarsh Thakkar + + * ext/alsa/gstalsasink.c: + * ext/alsa/gstalsasrc.c: + ext: alsa: Fix fallback paths for setting buffer and period times + Below fallback paths were introduced in + https://github.com/GStreamer/gst-plugins-base/commit/9759810d8206b5f1aa199f98599caec3630a1813 + if setting period time after buffer time failed : + 1) Set period time and then buffer time if it doesn't work + 2) Set only buffer time + 3) Set only period time + These all were not functioning properly since they were using old + copy of snd_pcm_hw_params_t which already had some fields set + as per previous try and this was causing issues as driver was + referring to that old value while trying to set them again in + fallback paths. + So now we always use the initial copy of snd_pcm_hw_params_t + for every fallback and same is also being done at + https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/commit/557c4295107dc7374c850b0bd5331dd35e8fdd0f + Also we change the sequence to set period time earlier than + buffer time since period bytes being the smaller unit, most of the times + if underlying alsa device has a dependency then it is of period bytes + to be a multiple of some value (as per underlying DMA constraint) + and rest of the parameters like buffer bytes need to be adjusted + as per period bytes. + The same sequence is also followed in alsa-utils at + https://github.com/alsa-project/alsa-utils/commit/9b621eeac4d55c4e881f093be5b163ca07d01b63 + Fix 2) and 3) scenarios by returning success if the exclusive setting is passed + and not doing any further setting for buffer time or period time. + Add new fallback path of not setting any buffer time and period time + if all above fallback paths fail. The same is also being + followed at aforementioned pulseaudio commit. + In case of alsasink, remove the retry goto label, since it is not + required anymore as fallback paths take care of setting default + values if driver is not accepting any of the fallback paths. + Use separate label for exit to free params structs and return err + code. This also fixes leak in no_rate goto path in alsasink + Part-of: + +2021-05-25 21:16:48 +0200 Jakub Adam + + * gst-libs/gst/video/gstvideoencoder.c: + * tests/check/libs/videoencoder.c: + videoencoder: pass upstream HDR information through codec state + Don't copy HDR metadata from sink pad, because its caps may not have + been set yet if GstVideoEncoder::negotiate is called from + GstVideoEncoder::set_format, as e.g. vpx encoder does. + Part-of: + +2021-05-25 21:15:53 +0200 Jakub Adam + + * gst-libs/gst/video/gstvideoutils.c: + * gst-libs/gst/video/gstvideoutils.h: + videoutils: add HDR metadata fields to GstVideoCodecState + Part-of: + +2021-08-16 10:19:07 +0300 Sebastian Dröge + + * gst-libs/gst/video/video-overlay-composition.c: + video-overlay-composition: Allow empty overlay compositions + Allowing to pass NULL to the constructor removes the need to + special-case the first rectangle in calling code and generally + simplifies application code. + Part-of: + +2021-06-01 15:27:31 +0200 Per Förlin + + * gst-libs/gst/rtsp/gstrtspconnection.c: + * gst-libs/gst/rtsp/gstrtspconnection.h: + gstrtspconnection: Add support to ignore x-server header reply + When connecting to an RTSP server in tunnled mode (HTTP) the server + usually replies with a x-server header. This contains the address + of the intended streaming server. However some servers return an + "invalid" address. Here follows two examples when it might happen. + 1. A server use Apache combined with a separate RTSP process to handle + Https request on port 443. In this case Apache handle TLS and + connects to the local RTSP server, which results in a local + address 127.0.0.1 or ::1 in the x-server reply. This address is + returned to the actual RTSP client in the x-server header. + The client will receive this address and try to connect to it + and fail. + 2. The client use a ipv6 link local address with a specified scope id + fe80::aaaa:bbbb:cccc:dddd%eth0 and connects via Http on port 80. + The RTSP server receives the connection and returns the address + in the x-server header. The client will receive this address and + try to connect to it "as is" without the scope id and fail. + In the case of streaming data from RTSP servers like 1. and 2. it's + useful to have the option to simply ignore the x-server header reply + and continue using the original address. + Part-of: + +2021-08-13 19:35:23 +0530 Nirbheek Chauhan + + * gst-libs/gst/sdp/gstmikey.c: + sdp: Avoid using g_memdup() since it is deprecated + g_memdup() is deprecated since GLib 2.68 and we want to avoid + deprecation warnings with recent versions of GLib. Instead of using + g_memdup2(), we can simply use the new gst_buffer_new_memdup() added + in 1.19.x + Part-of: + +2021-06-04 18:32:07 +1000 Matthew Waters + + * gst-libs/gst/gl/glprototypes/all_functions.h: + * gst-libs/gst/gl/glprototypes/buffer_storage.h: + * gst-libs/gst/gl/gstglbuffer.c: + * gst-libs/gst/gl/gstglfuncs.h: + * gst-libs/gst/gl/gstglmemorypbo.c: + * gst-libs/gst/gl/meson.build: + glbuffer: support persistent buffer mappings + Requires OpenGL 4.4 or EXT_buffer_storage + Current mesa exposes GL_ARB_buffer_storage when retrieving the relevant + functions returns no-ops and causes failures. + Improves throughput of uploads by roughly 30%-60% and download throughput by + roughly 10-30% across depending on the exact scenario and hardware. + Part-of: + +2021-07-30 23:57:20 +0900 Seungha Yang + + * tests/examples/overlay/win32-videooverlay.c: + examples: win32-videooverlay: Add support for testing gst_video_overlay_set_render_rectangle + Add keyboard handler to test gst_video_overlay_set_render_rectangle() + API for Windows video elements + Part-of: + +2021-07-30 23:04:57 +0900 Seungha Yang + + * tests/examples/overlay/win32-videooverlay.c: + examples: win32-videooverlay: Use d3d11videosink by default + d3d11videosink was promoted to have primary rank and + it's recommended videosink element on Windows + Part-of: + +2021-07-08 17:47:28 +0900 Seungha Yang + + * tests/check/elements/appsink.c: + tests: appsink: Add reverse stepping test case + To demonstrate reverse stepping issue of + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/848 + Part-of: + +2021-06-03 19:15:22 +0900 Seungha Yang + + * tests/examples/overlay/win32-videooverlay.c: + examples: win32-videooverlay: Add test option for threading scenario + Add an option to test the case where window thread and pipeline handling + thread are different. Mainly to test the HWND leak fixed by + https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2302 + Part-of: + +2021-07-27 17:44:02 +1000 Matthew Waters + + * gst-libs/gst/rtp/gstrtpbasedepayload.c: + rtpbasedepayload: remove object locking an extension + Doing that is fraught with danger of deadlocks and is not conceptually + part of the API contract. The object lock is generally intended for + internal-object-use only. + If another lock is needed, that should be added separately. + This lock was erronously added as part of: + https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1118 + Part-of: + +2021-07-27 13:30:56 +1000 Matthew Waters + + * ext/gl/gstgldownloadelement.c: + gldownload: use the GstGLSyncMeta in all cases + fixes qmlglsrc ! gldownload ! videoconvert in some cases. + Part-of: + +2021-07-22 17:11:26 -0400 Nicolas Dufresne + + * gst-libs/gst/gl/egl/gstglcontext_egl.c: + * gst-libs/gst/gl/egl/gstglcontext_egl.h: + glcontext: egl: Stop comparing native surface pointer + This was noticed with wayland, sometimes the newly create native + handle can have the same pointer (even though its new). This lead + to unwanted errors or crash. + Fixes #927 + Part-of: + +2021-07-22 17:02:51 -0400 Nicolas Dufresne + + * gst-libs/gst/gl/gstglwindow.c: + glwindow: Add "window-handle-changed" signal + This allow other objects to clear any wrapper object that depends + on the previous handle, and properly re-create the new wrappers without + having to resort into doing pointer comparison. + Part-of: + +2021-07-23 13:39:34 -0400 Nicolas Dufresne + + * gst-libs/gst/gl/wayland/gstglwindow_wayland_egl.c: + Revert "glwindow: wayland: Skip redoing surfaces if window haven't changed" + This reverts commit aba6bd7822f4c0f572765bfaada76f454a594317. + Part-of: + +2021-02-22 13:17:18 +0100 Guillaume Desmottes + + * gst-libs/gst/app/gstappsrc.c: + * tests/check/elements/appsrc.c: + appsrc: serialize custom events with buffers flow + Application may want to inject events to the pipeline and keep them + synchronized with the buffers flow. + Fix #247 + Part-of: + +2021-02-19 13:32:48 +0100 Guillaume Desmottes + + * docs/plugins/gst_plugins_cache.json: + * gst-libs/gst/app/gstappsink.c: + * gst-libs/gst/app/gstappsink.h: + * tests/check/elements/appsink.c: + appsink: add API to catch events + There is currently no way for users to receive incoming events from + appsink while keeping them properly serialized with the buffers flow. + This can be especially useful when application is injecting custom + downstream events into the pipeline and needs to know when they reached + appsink. + Solving this by adding a new signal notifying about new incoming events + and a set of action signals and method to pull those events. + The API is actually pulling the samples and events all together as they + are actually fetched from the same queue. + Having a specific API to pull only events would have the side effect of + discarding samples (and pulling samples would discard events) making + this API not convenient for users. + Partially fix #247 + Part-of: + +2021-02-19 14:45:08 +0100 Guillaume Desmottes + + * gst-libs/gst/app/gstappsink.c: + appsink: factor out dequeue_object() + No semantic change, will be used to implement new event API. + Part-of: + +2021-07-20 09:37:58 -0400 Nicolas Dufresne + + * gst-libs/gst/gl/wayland/gstglwindow_wayland_egl.c: + glwindow: wayland: Skip redoing surfaces if window haven't changed + The problem is that EGLNativeWindowSurface and wl_egl_surface are the + same object underneath, so we must recreate both together. As an + optimization, the EGLNativeWindowSurface wrapper is only re-created + if the window_handle changed. + On Mesa, this would cause crash, which will be fixed by: + https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11979 + And will lead to proper errors in the future or on other GL stack. This + issue was encounter using a permanent GstGLDisplay after cycling one of + multiple independent pipelines through NULL state. + Part-of: + +2021-07-20 09:36:22 -0400 Nicolas Dufresne + + * gst-libs/gst/gl/wayland/gstglwindow_wayland_egl.c: + glwindow: wayland: Remove redundant create_surfaces call + The surfaces will be created in _roundtrip_async, so no need to call + this early. This should cause no functional difference. + Part-of: + +2021-06-11 09:02:29 +0200 Michael Olbrich + + * gst/playback/gstdecodebin3.c: + decodebin3: improve decoder selection + Currently the decoder selection is very naive: The type with the highest + rank that matches the current caps is used. This works well for software + decoders. The exact supported caps are always known and the static caps are + defined accordingly. + With hardware decoders, e.g. vaapi, the situation is different. The decoder + may reject the caps later during a caps query. At that point, a new decoder + is created. However, the same type is chosen an after several tries, + decodebin fails. + To avoid this, do the caps query while adding the decoder and try again + with other decoder types if the query fails: + 1. create the decoder from the next matching type + 2. add and link the decoder + 3. change the decoder state to READY + 4. do the caps query + if it fails then remove the decoder again and go back to 1. + 5. expose the source pad + 6. sync the decoder state with the parent. + This way, the decoder is already part of the pipeline when the state change + to READY happens. So context handling should work as before. + Exposing the source pad after the query was successful is important: + Otherwise the thread from the decoder source pad may block in a blocked pad + downstream in the playsink waiting for other pads to be ready. + The thread now blocks trying to set the state back to NULL while holding + the SELECTION_LOCK. Other streams may block on the SELECTION_LOCK and the + playsink never unblocks the pad. The result is a deadlock. + Part-of: + +2021-07-14 16:09:41 -0400 Nicolas Dufresne + + * gst-libs/gst/gl/x11/gstglwindow_x11.c: + gl: x11: Issue XSync to close our top level window + This is similar action as when the window handle is modified, we now issue + XSync whenever we destroy our internal window. This ensure that the window is + properly closed before the connecgtion is dropped. + Fixes #815 + Part-of: + +2021-07-14 11:43:10 -0400 Nicolas Dufresne + + * gst-libs/gst/gl/wayland/gstglwindow_wayland_egl.c: + gl: wayland: Fix hinding the window on close() + When the window is called, we properly destroy all surfaces, which effectively + will unmap that surface and should make it disapear on screen, but we also + destroy the wl_source, a GSource that is resposibble of dispatching and executing + messages to/from the Wayland server. + As a side effect, the server never gets the message and the surfaces are + "leaked" on the server. We fix this using wl_display_flush() before destroying + the wl_source. + Fixes #815 + Part-of: + +2021-07-15 11:09:35 -0400 Nicolas Dufresne + + * tests/examples/gl/sdl/meson.build: + tests: example: Add missing glx_dep when building sdlshare + Might be realted to some recent Mesa cleanup, but GLX is not longer visible + through libOpenGL, so add the missing deps now. + Part-of: + +2021-05-17 12:04:50 +1000 Matthew Waters + + * tests/examples/gl/qt/qglwtextureshare/meson.build: + examples/qt/textureshare: add explicit dep on glx_dep + Fixes linking: + /usr/bin/ld: subprojects/gst-plugins-base/tests/examples/gl/qt/qglwtextureshare/qglwtextureshare.p/qglrenderer.cpp.o: undefined reference to symbol 'glXGetCurrentContext' + /usr/bin/ld: /usr/lib64/libGLX.so.0: error adding symbols: DSO missing from command line + Part-of: + +2021-05-14 14:10:55 +0200 Haelwenn (lanodan) Monnier + + * gst-libs/gst/gl/meson.build: + gl: Try GLVND 'opengl' and 'glx' first + This fixes targetting desktop OpenGL without libGL.so + Part-of: + +2021-07-12 09:37:24 +0300 Sebastian Dröge + + * gst-libs/gst/audio/gstaudioaggregator.c: + audioaggregator: Only post QoS messages if the property is enabled + Previously one of the branches did not check for the property value. To + avoid this in the future, check inside the QoS calculation function + instead. + As a side effect this now always prints the debug messages into the logs + when samples are dropped, which is useful information even without the + QoS messages. + Part-of: + +2021-07-09 09:49:15 +0300 Sebastian Dröge + + * gst-libs/gst/audio/gstaudioaggregator.c: + * tests/check/elements/audiomixer.c: + audioaggregator: Resync on the next buffer when dropping a buffer on discont resyncing + If a buffer is dropped during resyncing on a discont because either its + end offset is already before the current output offset of the + aggregator or because it fully overlaps with the part of the current + output buffer that was already filled, then don't just assume that the + next buffer is going to start at exactly the expected offset. It might + still require some more dropping of samples. + This caused the input to be mixed with an offset to its actual position + in the output stream, causing additional latency and wrong + synchronization between the different input streams. + Instead consider each buffer after a discont as a discont until the + aggregator actually resynced and starts mixing samples from the input + again. + Also update the start output offset of a new input buffer if samples + have to be dropped at the beginning. Otherwise it might be mixed too + early into the output and overwrite part of the output buffer that + already took samples from this input into account. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/912 + which is a regression introduced by https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1180/ + Part-of: + +2021-05-26 18:20:02 -0400 Olivier Crête + + * tests/check/elements/audiomixer.c: + audiomixer: Add test for QoS message posting + Part-of: + +2021-05-26 10:38:18 -0400 Olivier Crête + + * gst-libs/gst/audio/gstaudioaggregator.c: + audio aggregator: Post QoS message when dropping audio + Post a QoS message every time some audio samples are dropped. + Also print log messages to make it easier to debug + Part-of: + +2021-05-25 18:05:05 -0400 Olivier Crête + + * gst-libs/gst/audio/gstaudioaggregator.c: + audio aggregator: Count samples that are dropped or processed + Keep a count of samples that are dropped or processed as statistics + Part-of: + +2021-05-21 16:16:50 -0400 Olivier Crête + + * gst-libs/gst/audio/gstaudioaggregator.c: + audio aggregator: Add QoS property to pad + Add a property to emit a QoS message whenever any data is dropped. + Part-of: + +2021-05-21 16:10:06 -0400 Olivier Crête + + * gst-libs/gst/audio/gstaudioaggregator.c: + audio aggregator: Rename property enum to match class name + Add "CONVERT" into the property enum as we're going to add an + enum specifically for the base pad. + Part-of: + +2019-09-24 17:14:10 +0200 Stéphane Cerveau + + * gst-libs/gst/video/gstvideodecoder.c: + * gst-libs/gst/video/gstvideodecoder.h: + * gst-libs/gst/video/gstvideoutils.h: + * tests/check/libs/videodecoder.c: + videodecoder: add API to receive subframes + A video decoder can now receive subframes and start decoding + instead of waiting for the full frame to be complete. + Subframe support will reduce latency as described in the + video encoder base class. + A unit test illustrating this API is available in + tests/check/libs/videodecoder.c. + Part-of: + +2021-07-03 19:36:06 +0900 Seungha Yang + + * gst-libs/gst/gl/wgl/gstglcontext_wgl.c: + gl/context/wgl: Add missing NULL init + The value of uninitialized local variable is varying depending + on compiler and not guaranteed to be NULL initialized. + That results in pointing random address instead of expected function pointer. + Part-of: + +2021-03-12 13:55:38 +0100 Francisco Javier Velázquez-García + + * docs/plugins/gst_plugins_cache.json: + * gst/videotestsrc/gstvideotestsrc.c: + * gst/videotestsrc/gstvideotestsrc.h: + * gst/videotestsrc/videotestsrc.c: + * gst/videotestsrc/videotestsrc.h: + videotestsrc: Add SMPTE75 RP-219 color bars conformant + Implement 8-bit values of SMPTE RP 2019-1:2014. The bar widths and + heights are the result of fractions as integers. The remainders of + widths are distributed in a way that they match the values in Table + C.1 (a) in the specification. + Part-of: + +2021-03-12 20:58:40 +0100 Jan Alexander Steffens (heftig) + + * gst/videotestsrc/videotestsrc.c: + videotestsrc: Add a start parameter to _blend_line + Makes it easier to paint part of a line. + Part-of: + +2021-03-12 20:57:13 +0100 Jan Alexander Steffens (heftig) + + * gst/videotestsrc/videotestsrc.c: + videotestsrc: Keep tmpline unchanged in_convert_tmpline + This will allow us to repeatedly + call it to render subsequent lines. + Part-of: + +2021-06-15 13:22:55 -0700 Michael de Gans <47511965+mdegans@users.noreply.github.com> + + * gst-libs/gst/app/gstappsink.c: + appsink: fix incorrect return nullability + This commit fixes the annoations for return nullability on several + GstAppSink functions. This was causing bindings to be generated + incorrectly. + Fixes #914 + Part-of: + +2021-05-19 16:22:46 +0900 Seungha Yang + + * docs/plugins/gst_plugins_cache.json: + * gst/compositor/compositor.c: + * gst/compositor/compositor.h: + compositor: Add scaling policy to support PAR-aware scaling + Adding "sizing-policy" property for user to be able to specify + scaling policy (aspect-ratio for example). + At the moment, supported mode is only keep-aspect-ratio, but we might + be able to add more policies such as cropping, etc. + Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/696 + Part-of: + +2021-05-19 20:11:15 +0900 Seungha Yang + + * gst-libs/gst/video/gstvideosink.c: + * gst-libs/gst/video/gstvideosink.h: + video: Deprecate gst_video_sink_center_rect() + ... and add gst_video_center_rect() method as a replacement. + The method is useful for outside of videosink subclasses as well + but the old naming might be able to mislead people. + Part-of: + +2021-05-24 19:11:51 +0200 Jakub Adam + + * gst-libs/gst/rtp/gstrtpbasepayload.c: + rtpbasepayload: don't write empty extension header + When some header extensions are present but none decides to write any + data to the currently processed RTP buffer, remove the extension data + section. + Resulting RTP buffer wasn't formatted correctly. + Part-of: + +2021-05-24 19:02:42 +0200 Jakub Adam + + * gst-libs/gst/rtp/gstrtpbuffer.c: + * gst-libs/gst/rtp/gstrtpbuffer.h: + * tests/check/libs/rtp.c: + rtpbuffer: Add gst_rtp_buffer_remove_extension_data() + Part-of: + +2021-05-24 19:01:24 +0200 Jakub Adam + + * gst-libs/gst/rtp/gstrtpbasepayload.c: + rtpbasepayload: map RTP buffer READWRITE when setting headers + GstRTPHeaderExtension::write can map the RTP buffer for reading. If that + happens on a buffer that is already mapped WRITE-only by the payloader, + the payloader's mapping gets invalidated (GstRTPBuffer::map will point + to a different instance of GstMemory). + Part-of: + +2021-06-24 14:56:11 -0400 Olivier Crête + + * gst-libs/gst/rtp/gstrtphdrext.c: + * gst-libs/gst/rtp/gstrtphdrext.h: + rtphdrext: Make all fields private + The presence of a method and a field with the same name confuses the C# + binding generator. As there are accessor functions for all the fields, + let's just make them private. + Part-of: + +2021-06-26 12:50:58 -0400 Olivier Crête + + * gst-libs/gst/gl/egl/gstglmemoryegl.c: + gst: don't use volatile to mean atomic + volatile is not sufficient to provide atomic guarantees and real atomics + should be used instead. GCC 11 has started warning about using volatile + with atomic operations. + https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719 + Discovered in gst-plugins-good#868 + Part-of: + +2021-06-25 23:42:34 +1000 Jan Schmidt + + * gst-libs/gst/video/video-converter.c: + video-converter: Set up matrix tables only once. + When configuring a multi-thread converter, only allocate the + shared colour conversion matrices once for the first thread, + to avoid allocating multiple times and leaking memory. + Part-of: + +2021-05-06 19:01:41 +0200 Jan Alexander Steffens (heftig) + + * gst-libs/gst/video/video-converter.c: + video-converter: Set up gamma tables only once + When the video converter is using multiple threads, the gamma tables + were created multiple times, leaking the tables set up for the previous + thread. + Only calculate the tables once. + Part-of: + +2021-05-06 18:22:45 +0200 Jan Alexander Steffens (heftig) + + * gst-libs/gst/audio/audio-converter.c: + audio-converter: Free config when gst_audio_converter_new fails + The config got leaked when parameter validation fails. + Part-of: + +2021-06-25 15:24:21 +0900 Seungha Yang + + * gst-libs/gst/gl/glprototypes/sync.h: + glprototypes: Add GST_GL_API_OPENGL to available version of sync + Make sync APIs usable if supported, even when GST_GL_API_OPENGL3 is + not selected + Part-of: + +2021-04-23 18:03:20 +0200 Per Förlin + + * gst-libs/gst/rtsp/gstrtspconnection.c: + gstrtspconnection: Add IPv6 support for tunneled mode + An IPv6 address must be specified within [] brackets. + Add brackets for IPv6 address used for tunneled mode, + for non-tunneled this is already supported. + Part-of: + +2021-06-16 14:49:14 -0400 Nicolas Dufresne + + * gst-libs/gst/video/gstvideodecoder.c: + videodecoder: Call drain() rather then finish() on segment-done + The finish() virtual function documentation state that "Sub-classes can refuse + to decode new data after." Though, it is very common to issue a non-flushing + seek after that event in gapless playback uses case. This fixes potential + stalls with code using segment seeks, by using drain() virtual funciton + instead. + Part-of: + +2021-06-08 14:55:36 +1000 Matthew Waters + + * ext/ogg/gstoggdemux.c: + oggdemux: fix a race in push mode when performing the duration seek + There may be two or more threads involved here however the important + interaction is the use of ogg->seeK_event_drop_till value that was only + set in the push-mode seek-event thread and could race with upstream + sending e.g. and EOS (or data). + Scenario is this: + 1. oggdemux performs a seek to near the end of the file to try and find + the duration. ogg->push_state is set to PUSH_DURATION. + 2. Seek is picked up by the dedicated seek event thread and sets + ogg->seek_event_drop_till to the seek event's seqnum. + 3. Most operations are blocked or dropped waiting on the duration to + be determined and processing continues until a duration is found. + 4. Two branching options for how this ultimately plays out + 4a. The source is too fast and we receive an EOS event which is dropped + because ogg->push_state == PUSH_DURATION. In this case everything + works. + 4b. We hit our 'almost at the end' check in + gst_ogg_pad_handle_push_mode_state() and attempt to seek back to the + beginning (or to a user-provided seek). This seek is marshalled to + the seek event thread without setting ogg->seek_event_drop_till but + with change ogg->push_state = PUSH_PLAYING. If an EOS event or + e.g. buffers arrive from upstream before the seek event thread has + picked up the seek event, then the EOS/data is processed as if it + came as a result of the seek event. This is the case that fails. + The fix is two-fold: + 1. Preemptively set ogg->seek_event_drop_till when setting the seek + event so that data and other events can be dropped correctly. + 2. In addition to dropping and EOS events while ogg->push_state == + PUSH_DURATION, also drop any EOS events that are received before the + seek event has been processed by also tracking the seqnum of the seek. + Part-of: + +2021-06-21 14:06:14 +0000 Sergei Kovalev + + * gst-libs/gst/audio/gstaudiobasesink.c: + audiobasesink: Fix of double lock release + Add missing "return;" which prevents double lock release. + Part-of: + +2021-06-21 08:34:07 +0000 Corentin Damman + + * COPYING: + Update COPYING + Part-of: + +2021-06-16 15:55:49 +1000 Matthew Waters + + * gst-libs/gst/gl/egl/gstglcontext_egl.c: + * gst-libs/gst/gl/egl/gstglcontext_egl.h: + * gst-libs/gst/gl/gstglcontext.c: + * gst-libs/gst/gl/x11/gstglcontext_glx.c: + * gst-libs/gst/gl/x11/gstglcontext_glx.h: + gl/context: fill a GError on platform-specific fill_info() error + Fixes bindings assuming that GError is always set on error: + https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/809#note_957493 + https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/809#note_957494 + https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/809#note_957498 + Part-of: + +2021-06-16 12:13:21 +0200 François Laignel + + * gst-libs/gst/audio/gstaudiobasesink.c: + * gst-libs/gst/audio/gstaudiodecoder.c: + * gst-libs/gst/audio/gstaudioencoder.c: + * gst-libs/gst/audio/gstaudiostreamalign.c: + * gst-libs/gst/pbutils/gstdiscoverer.c: + Check mandatory ClockTime arguments + Part-of: + +2021-06-11 09:27:46 -0600 Scott Moreau + + * gst-libs/gst/gl/wayland/gstglwindow_wayland_egl.c: + gl/wayland: Use consistent wl_display when creating work queue for proxy wrapper + Without this, glimagesink since wayland 727c7903 fails with + gst-launch-1.0: ../src/wayland-client.c:2181: wl_proxy_set_queue: + Assertion 'proxy->display == queue->display' failed. + Part-of: + +2021-06-07 17:54:46 +0800 Haihua Hu + + * gst-libs/gst/gl/egl/gstglcontext_egl.c: + * gst-libs/gst/gl/viv-fb/gstglwindow_viv_fb_egl.c: + * gst-libs/gst/gl/viv-fb/gstglwindow_viv_fb_egl.h: + gl/viv-fb: fix gl plugin hang when run with viv-fb backend + below commit change the window resize thread and cause viv-fb backend + hang, need move resize code after window->open is called. Otherwise, + the resize message will send to a thread that not start running and + window resize call will waiting forever. + Commit: b887db1efe816c0c28b60a6842fa9005a26c1502 + glwindow: fix racy resize updates + Take locks around resize handling and marshall all resizes to the + windowing thread by default. + Part-of: + +2021-06-10 12:41:31 -0400 Nicolas Dufresne + + * gst-libs/gst/gl/egl/gsteglimage.c: + eglimage: Add AV12 DMABuf import support + The per plane format mapping for AV12 was missing, which would force + raw upload. + Part-of: + +2021-06-10 12:39:34 -0400 Nicolas Dufresne + + * gst-libs/gst/gl/egl/gsteglimage.c: + eglimage: Fix wrong stride when importing DMABuf + When the code was ported to use component index instead of plane + index, the call to GST_VIDEO_INFO_PLANE_STRIDE() was accidently ported + to use component index, but this macro takes a plane index. + Part-of: + +2021-06-08 17:27:55 +0300 Sebastian Dröge + + * gst-libs/gst/app/gstappsrc.c: + appsrc: When dropping buffers before handling the initial segment use the latest input segment + Part-of: + +2021-06-08 13:05:46 +0300 Sebastian Dröge + + * gst-libs/gst/app/gstappsrc.c: + appsrc: Correctly check if this is the first buffer that was queued + By checking the queue length this would also count events and caps. We + already keep track of the number of buffers separately so just use that. + Part-of: + +2021-06-05 02:35:30 +0200 Mathieu Duponchelle + + * gst-libs/gst/app/gstappsrc.c: + appsrc: signal enough-data even when leaking + this is convenient for application that wish to monitor whether + the appsrc is leaking. + Part-of: + +2021-06-03 21:14:42 +0200 Marijn Suijten + + * gst-libs/gst/rtp/gstrtphdrext.c: + rtp/header: Add missing `array length` annotation to read/write methods + Part-of: + +2021-06-03 13:40:33 +0300 Sebastian Dröge + + * docs/plugins/gst_plugins_cache.json: + * gst-libs/gst/video/video-format.h: + video: Sort video formats correctly + AV12 should be right after A420 because it is the same format with just + one plane less, instead of being next to I420/NV12 which don't have an + alpha channel. + RGBP should be before GBR because it's the same format except for the + more canonical component order. + See https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/790 + which actually checks on the CI if the algorithm defined in + video-format.h is implemented correctly. + Part-of: + +2021-06-03 15:57:39 +1000 Matthew Waters + + * ext/gl/gstglvideomixer.c: + glvideomixer: hold extra pad ref while calling parent + Our subsequent cleanup needs a ref on the pad and calling the parent may + release the last reference and could cause a use-after-free. + Part-of: + +2021-06-03 15:57:17 +1000 Matthew Waters + + * ext/gl/gstglstereomix.c: + * ext/gl/gstglstereosplit.c: + gl/stereo: fix a coupld of caps leaks + Part-of: + +2021-05-22 15:42:17 +1000 Matthew Waters + + * gst-libs/gst/gl/gstgldisplay.c: + gl/display: remove choosing egl fallback from GST_GL_PLATFORM + If GST_GL_WINDOW is unset but GST_GL_PLATFORM=egl, then we were choosing + to create an GstGLDisplayEGL directly instead of going through the any + more specific windowing system implementation (X11, Wayland). + The 'create an GstGLDisplayEGL when GST_GL_PLATFORM=egl' was a fallback + as we did not have entries for all EGL-using window systems previously. + Now that we do, the fallback can be removed. An EGLDisplay can still + be created by setting GST_GL_WINDOW=egl or as one option. + Fixup of https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1154 + Part-of: + +2021-05-23 23:51:27 +0100 Tim-Philipp Müller + + * ext/alsa/gstalsamidisrc.c: + * ext/ogg/gstoggdemux.c: + * gst-libs/gst/gl/x11/gstglcontext_glx.c: + * gst-libs/gst/riff/riff-read.c: + * gst-libs/gst/rtp/gstrtcpbuffer.c: + * gst-libs/gst/rtp/gstrtpbuffer.c: + * gst-libs/gst/rtsp/gstrtspconnection.c: + * gst-libs/gst/rtsp/gstrtspmessage.c: + * gst-libs/gst/sdp/gstmikey.c: + * gst-libs/gst/video/video-anc.c: + * meson.build: + Use g_memdup2() where available and add fallback for older GLib versions + g_memdup() is deprecated since GLib 2.68 and we want to avoid + deprecation warnings with recent versions of GLib. + Part-of: + +2021-06-01 15:28:24 +0100 Tim-Philipp Müller + + * meson.build: + Back to development + === release 1.19.1 === 2021-06-01 00:09:54 +0100 Tim-Philipp Müller diff --git a/NEWS b/NEWS index cc6c3b4a8..0e581c39b 100644 --- a/NEWS +++ b/NEWS @@ -1,15 +1,15 @@ GStreamer 1.20 Release Notes GStreamer 1.20 has not been released yet. It is scheduled for release -around July 2021. +around October/November 2021. 1.19.x is the unstable development version that is being developed in -the git master branch and which will eventually result in 1.20, and -1.19.1 is the current development release in that series +the git main branch and which will eventually result in 1.20, and 1.19.2 +is the current development release in that series -It is expected that feature freeze will be around June/July 2021, -followed by several 1.19 pre-releases and the new 1.20 stable release -around July 2021. +It is expected that feature freeze will be in early October 2021, +followed by one or two 1.19.9x pre-releases and the new 1.20 stable +release around October/November 2021. 1.20 will be backwards-compatible to the stable 1.18, 1.16, 1.14, 1.12, 1.10, 1.8, 1.6,, 1.4, 1.2 and 1.0 release series. @@ -17,7 +17,7 @@ around July 2021. See https://gstreamer.freedesktop.org/releases/1.20/ for the latest version of this document. -Last updated: Sunday 30 May 2021, 16:00 UTC (log) +Last updated: Wednesday 22 September 2021, 18:00 UTC (log) Introduction @@ -247,6 +247,10 @@ Documentation improvements Possibly Breaking Changes - this section will be filled in in due course +- MPEG-TS SCTE-35 API changes (FIXME: flesh out) +- gst_parse_launch() and friends now error out on non-existing + properties on top-level bins where they would silently fail and + ignore those before. Known Issues @@ -274,16 +278,15 @@ the git 1.20 branch, which will be a stable branch. 1.20.0 -1.20.0 is scheduled to be released around July 2021. +1.20.0 is scheduled to be released around October/November 2021. Schedule for 1.22 Our next major feature release will be 1.22, and 1.21 will be the unstable development version leading up to the stable 1.22 release. The -development of 1.21/1.22 will happen in the git master branch. +development of 1.21/1.22 will happen in the git main branch. -The plan for the 1.22 development cycle is yet to be confirmed, but it -is hoped that feature freeze will take place some time in December 2021. +The plan for the 1.22 development cycle is yet to be confirmed. 1.22 will be backwards-compatible to the stable 1.20, 1.18, 1.16, 1.14, 1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series. diff --git a/RELEASE b/RELEASE index dbd8eecf0..a25e5b2c1 100644 --- a/RELEASE +++ b/RELEASE @@ -1,4 +1,4 @@ -This is GStreamer gst-plugins-base 1.19.1. +This is GStreamer gst-plugins-base 1.19.2. GStreamer 1.19 is the development branch leading up to the next major stable version which will be 1.20. diff --git a/gst-plugins-base.doap b/gst-plugins-base.doap index ddc16d6ed..7b223bd25 100644 --- a/gst-plugins-base.doap +++ b/gst-plugins-base.doap @@ -34,6 +34,16 @@ A wide range of video and audio decoders, encoders, and filters are included. + + + 1.19.2 + master + + 2021-09-23 + + + + 1.19.1 diff --git a/meson.build b/meson.build index 435679eae..9b00253a0 100644 --- a/meson.build +++ b/meson.build @@ -1,5 +1,5 @@ project('gst-plugins-base', 'c', - version : '1.19.1.1', + version : '1.19.2', meson_version : '>= 0.54', default_options : [ 'warning_level=1', 'buildtype=debugoptimized' ]) -- cgit v1.2.1