=== release 1.22.0 === 2023-01-23 19:29:34 +0000 Tim-Philipp Müller <tim@centricular.com> * NEWS: * RELEASE: * gst-plugins-base.doap: * meson.build: Release 1.22.0 2023-01-23 16:27:50 +0000 Tim-Philipp Müller <tim@centricular.com> * po/af.po: * po/az.po: * po/bg.po: * po/ca.po: * po/cs.po: * po/da.po: * po/de.po: * po/el.po: * po/en_GB.po: * po/eo.po: * po/es.po: * po/eu.po: * po/fi.po: * po/fr.po: * po/fur.po: * po/gl.po: * po/hr.po: * po/hu.po: * po/id.po: * po/it.po: * po/ja.po: * po/ka.po: * po/lt.po: * po/lv.po: * po/nb.po: * po/nl.po: * po/or.po: * po/pl.po: * po/pt_BR.po: * po/ro.po: * po/ru.po: * po/sk.po: * po/sl.po: * po/sq.po: * po/sr.po: * po/sv.po: * po/tr.po: * po/uk.po: * po/vi.po: * po/zh_CN.po: gst-plugins-base: update translations Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3773> 2023-01-22 00:52:56 +0100 Ruben Gonzalez <rgonzalez@fluendo.com> * ext/gl/gstglvideomixer.c: glvideomixer: Fixing error with mouse navigation events when no pixel-aspect-ratio Handling mouse navigation events in glvideomixer element, if no pixel-aspect-ratio info in the caps, an assertion error is produced inside gst_util_fraction_multiply because default denominator is zero. Error fixed: ``` (gst-launch-1.0:102654): GStreamer-CRITICAL **: 00:47:51.598: gst_util_fraction_multiply: assertion 'b_d != 0' failed ``` Simple pipeline to reproduce the issue: ``` gst-launch-1.0 -v glvideomixer name=mix ! glimagesinkelement gltestsrc ! mix.sink_0 ``` Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3766> 2023-01-20 09:59:06 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gstdecodebin3.c: * gst/playback/gstparsebin.c: * gst/playback/gstplaybin3.c: * gst/playback/gsturidecodebin3.c: * gst/playback/gsturisourcebin.c: playback: New playback elements are no longer experimental The API is not expected to change and it has been used extensively since 1.18. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3761> 2023-01-19 16:35:08 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gstdecodebin3.c: decodebin3: Remove failing stream from selection If no decoder is present for a given stream, remove it from the requested selection. Fixes #1581 and #1662 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3754> 2023-01-19 16:27:57 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gstdecodebin3-parse.c: decodebin3: Don't intercept queries if no parsebin present If we don't use a parsebin, we forward the queries as-is from upstream. There is no reconfiguration possible within identity. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3754> 2023-01-19 16:25:51 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gstdecodebin3.c: * gst/playback/gsturisourcebin.c: decodebin3: Don't insert parsebin if input is already parsed This is a temporary workaround until we find a generic solution to indicate that a stream has already been "parsed". Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3754> 2023-01-09 11:36:38 +0100 Guillaume Desmottes <guillaume.desmottes@onestream.live> * tools/gst-play.c: gst-play: add --no-position It can be useful to reduce or remove the clutter in logs due to those queries when debugging. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3698> 2023-01-18 16:39:03 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst-libs/gst/gl/gstglupload.c: gleglimage: Fix GL_OES_EGL_image_external name in debug trace There is a debug log when this extension is missing, but it was reporting the wrong extension name, which was confusing. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3748> 2023-01-16 11:43:37 +0100 Michiel Konstapel <github@konstapel.nl> * ext/gl/gstglvideomixer.c: glvideomixer: don't clear pad->geometry_change when setting an identical value Closes #1715 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3733> 2023-01-14 16:16:49 +0000 Tim-Philipp Müller <tim@centricular.com> * gst/playback/gsturidecodebin3.c: uridecodebin3: clear subitem if suburi is set to NULL Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1649 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3730> 2023-01-16 15:55:56 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst-libs/gst/gl/gstglcontext.c: gl: Fix crash in cocoa due to race in gst_gl_context_activate() We create a new context in `gst_gl_context_create_thread()` and then activate it on the current thread. Thereafter we assume that the current thread continues to be the active thread for that context and call `gst_gl_context_fill_info()` which asserts that the current thread is the active thread. However, if at the same time a different thread calls `send_message_async()`, it will call into `gst_gl_window_cocoa_send_message_async()` which will schedule the message to be invoked using GCD. That anonymous function will also call `gst_gl_context_activate()`, which creates a race, which can lead to: ``` gst_gl_context_fill_info: assertion 'context->priv->active_thread == g_thread_self ()' failed ``` Fix it by using `gst_gl_context_thread_add()` to invoke `fill_info()` on the context. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3732> 2023-01-14 16:16:39 +0530 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/gl/cocoa/gstglcaopengllayer.h: * gst-libs/gst/gl/cocoa/gstglcaopengllayer.m: * gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m: gl/cocoa: Store a weak reference to the `GstGLWindow` instead of the `GstGLContext` We can't rely on the `GstGLContext` to stay alive and need to keep track of it. For that we keep track of the `GstGLWindow` in a weak reference to avoid a reference cycle, and get the corresponding `GstGLContext` whenever needed. With contributions from Nirbheek Chauhan. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1697 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3729> === release 1.21.90 === 2023-01-13 19:08:48 +0000 Tim-Philipp Müller <tim@centricular.com> * NEWS: * RELEASE: * gst-plugins-base.doap: * meson.build: Release 1.21.90 2023-01-13 16:39:51 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gsturisourcebin.c: urisourcebin: Cleanup on failure This ensures there is a source present/valid *ONLY* in PAUSED and above. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3720> 2023-01-13 16:37:03 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gsturisourcebin.c: urisourcebin: Unset locked state Some elements still had it in failure cases Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3720> 2023-01-13 16:34:45 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gsturidecodebin3.c: uridecodebin3: Handle state synchronization failures Properly reset and remove the failing urisourcebin if we failed bringing them up to the same state as ourselves. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1708 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3720> 2023-01-12 14:39:20 -0300 Thibault Saunier <tsaunier@igalia.com> * gst-libs/gst/gl/gstglbasefilter.c: glbasefilter: Copy metas when they only contain they "video" tag Same logic as in `GstVideoFilter` Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3716> 2023-01-11 17:30:09 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gstdecodebin3.c: decodebin3: Fix global group-id handling The goal of the "global" group-id is to fix new inputs that do not come from the same "source" as others. In order to ensure all "current" streams have the same group-id we distribute the first valid group-id to all streams. This commit fixes two issues with that: * When inputs are unlinked they weren't always properly resetted (it would only work if parsebin is used, which is no longer the default in uridecodebin3/playbin3). * When computing the global group-id, take into account unset group-id (i.e. GST_GROUP_ID_INVALID). Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1698 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3712> 2023-01-11 15:41:03 +0000 Tim-Philipp Müller <tim@centricular.com> * po/LINGUAS: * po/af.po: * po/az.po: * po/bg.po: * po/ca.po: * po/cs.po: * po/da.po: * po/de.po: * po/el.po: * po/en_GB.po: * po/eo.po: * po/es.po: * po/eu.po: * po/fi.po: * po/fr.po: * po/fur.po: * po/gl.po: * po/hr.po: * po/hu.po: * po/id.po: * po/it.po: * po/ja.po: * po/ka.po: * po/lt.po: * po/lv.po: * po/nb.po: * po/nl.po: * po/or.po: * po/pl.po: * po/pt_BR.po: * po/ro.po: * po/ru.po: * po/sk.po: * po/sl.po: * po/sq.po: * po/sr.po: * po/sv.po: * po/tr.po: * po/uk.po: * po/vi.po: * po/zh_CN.po: gst-plugins-base: update translations Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3711> 2023-01-11 14:53:39 +0000 Tim-Philipp Müller <tim@centricular.com> * scripts/dist-translations.py: * scripts/meson.build: Fix translation pot files when creating dist tarballs Add version as per Translation Project requirements and also add a .pot file without the ABI suffix. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3711> 2023-01-10 11:19:12 +0100 Guillaume Desmottes <guillaume.desmottes@onestream.live> * gst/playback/gstdecodebin3.c: decodebin3: ensure recalculate_group_id() is called with INPUT lock This function uses main_input and current_group_id which are protected by the input lock. Some calls were already safe but not all. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3702> 2022-12-21 15:35:21 +0100 Guillaume Desmottes <guillaume.desmottes@onestream.live> * gst/playback/gsturidecodebin3.c: uridecodebin3: fix stream leak GstSourcePad owns the GstStream but was not unreffing it when being disposed. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3617> 2022-12-21 10:44:40 +0100 Guillaume Desmottes <guillaume.desmottes@onestream.live> * gst/playback/gstdecodebin3.c: decodebin3: fix dead lock when removing pad gst_element_remove_pad() is triggering a call to gst_decodebin3_input_pad_unlink() which needs the input lock as well, resulting in a dead lock. Fix #1667 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3614> 2023-01-11 12:17:13 +0200 Sebastian Dröge <sebastian@centricular.com> * tools/gst-device-monitor.c: * tools/gst-discoverer.c: * tools/gst-play.c: tools: Use `gst_macos_main()` on macOS Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1673 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3709> 2023-01-10 13:06:37 +0000 Tim-Philipp Müller <tim@centricular.com> * tests/interactive/test-effect-switch.c: tests: interactive: test-effect-switch: use autovideosink Also works on Windows. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3703> 2023-01-09 01:24:57 +0000 Tim-Philipp Müller <tim@centricular.com> * tools/gst-play.c: gst-play: fix command line option string formatting Add missing space to translated string. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3696> 2023-01-04 21:37:55 +0100 Mathieu Duponchelle <mathieu@centricular.com> * docs/meson.build: docs: explicitly declare gir build dependencies As the path to the gir file is passed to hotdoc.generate_doc() and not the build target itself, meson doesn't know about the dependency. In turn, as the CI doesn't build everything before building the documentation target, some gir files might not exist, for instance in the case of gst-rtsp-server, causing the output documentation to be empty. The error occurred silently because hotdoc accepts wildcards for *-sources arguments, thus it won't warn about a missing gir file as it is legitimate for glob matching to resolve to nothing. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3686> 2023-01-06 18:09:02 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/typefind/gsttypefindfunctions.c: typefindfunctions: Add missing length check to XML typefinder Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=54811 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3690> 2023-01-06 14:37:31 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/typefind/gsttypefindfunctions.c: typefindfunctions: Reduce XML typefinder minimum data size from 64 to 32 bytes 64 bytes makes the typefinder fail on very small XML documents on which it succeeded previously. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3690> 2023-01-05 17:59:41 +0200 Sebastian Dröge <sebastian@centricular.com> * ext/opus/gstopusdec.c: opusdec: Try harder to negotiate the upstream channels/rate preferences It might be possible to fulfill those but not with the first caps structure. Instead of just fixating the first caps structure, check if the preference can be fulfilled by any of the structures as the first step. Without this the following pipeline negotiates to mono after the decoder because opusenc only has a single channel in its first caps structure. gst-launch-1.0 audiotestsrc ! audio/x-raw,channels=2 ! opusenc \ ! queue ! opusdec ! queue ! opusenc ! fakesink Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3689> 2023-01-05 17:35:02 +0200 Sebastian Dröge <sebastian@centricular.com> * ext/opus/gstopusenc.c: Revert "opusenc: Reverse channel order in template caps" This reverts commit cdf411e82d7e437e5de138492b6e75e5513686ee. It causes pipelines to unnecessarily negotiate to 8 channels. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1688 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3689> 2023-01-03 18:53:41 -0500 Olivier Crête <olivier.crete@collabora.com> * gst-libs/gst/audio/gstaudioutilsprivate.c: audioenc/dec: Avoid adding temporary structure As a minor optimisation Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3673> 2023-01-03 18:52:05 -0500 Olivier Crête <olivier.crete@collabora.com> * gst-libs/gst/audio/gstaudioutilsprivate.c: audioenc/dec: Preserve downstream caps preference in get caps This should fix pipelines such as this one to work as expected ... ! opusenc ! capsfilter caps='audio/x-opus, channels=1; audio/x-opus, channels=2' ! ... The expectation is that the encoder will propose the first structure before the second one to the source. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3673> 2022-12-23 16:15:49 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/typefind/gsttypefindfunctions.c: typefindfunctions: Check for the SVG namespace URL in addition to `<svg` and the doctype Finding the SVG namespace URL gives a clear indication that this is actually an SVG file while the `<svg>` tag only gives a likely indication as it's rather short. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1540 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3631> 2022-12-23 17:25:06 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/typefind/gsttypefindfunctions.c: typefindfunctions: Make XML typefinder more strict If a XMLDec is found, check also for its end. Similarly, check for the end of the XML tag we're looking for and make sure that the following characters are valid. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1536 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3632> 2022-12-30 08:44:35 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gsturisourcebin.c: urisourcebin: Fix parsebin handling The goal of !3601 was to make sure we don't end up with non-streams-aware adaptive demuxers. Since we know that parsebin is streams-aware, just remember that and handle them that way. Fixes issues with some scenarios where parsebin might add pads *before* the collection is posted on the bus Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1675 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3658> 2022-12-29 16:02:38 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gsturidecodebin3.c: uridecodebin3: Fix handling of "expected" pads The number of expected pads was: * Defaulting to 1 * Or being overriden by GST_MESSAGE_STREAMS_SELECTED This fails if upstream isn't a selectable source and has multiple streams, and would therefore cause failures with multi-stream gapless playback Fixes #1672 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3658> 2022-12-29 16:01:07 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gsturidecodebin3.c: uridecodebin3: Avoid repeatedly calling the blocking probe When skipping an event, we want to unref it and say we handled it. This avoids being repeatedly called for the same (sticky) events. The events will be properly propagated once the pad is linked. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3658> 2022-12-29 15:58:24 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gsturidecodebin3.c: uridecodebin3: Handle multiple pending pad block probes It is quite possible to have the blocking probe called from different streaming threads when all expected pads are present. * Notify all waiters by using g_cond_broadcast instead of g_cond_signal * Properly remove the probe after waiting Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3658> 2022-12-29 11:02:10 +0200 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/gl/gstglcontext.c: gl: Mark `gst_gl_context_new_wrapped()` return value as `nullable` If a GL context is requested for which no API support is compiled in then `NULL` is returned. Also remove a useless `NULL` check: `g_object_new()` can't possibly return `NULL`, ever. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3656> 2022-12-24 23:41:52 -0500 F. Duncanh <fduncanh@gmail.com> * gst-libs/gst/gl/meson.build: plugins-base/tests/check/meson.build: add omitted Wayland dependence SUSE places Wayland include files in /usr/include/wayland, and needs a Cflag added to wayland_client_deps by pkg-config, which is added to gl_winsys_deps: add this as a dependency in gstgl_dep to fix issue. Fixes #1607 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3638> 2022-12-29 03:52:42 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst-libs/gst/gl/meson.build: meson: Add gstreamer-gl-1.0 pkgconfig vars to internal dependency So we can fetch gl_winsys, gl_platforms, etc directly using gst_gl_dep.get_variable() when building gstreamer as a subproject, or when building gst-plugins-rs's gtk4 plugin. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3654> 2022-12-13 08:58:43 -0500 Xavier Claessens <xavier.claessens@collabora.com> * meson.build: Fix API visibility macros This copies the logic from GLib discussed there: https://gitlab.gnome.org/GNOME/glib/-/merge_requests/2936 Beside being simpler, it also fix all public symbols being annotated with dllexport when doing a static build, as discovered there: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3540#note_1678335 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3567> 2022-12-19 11:49:32 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gsturisourcebin.c: urisourcebin: Modify check for streams-aware adaptive demuxers Using the "GstBin" flags to check if an adaptive demuxer is streams-aware isn't a good idea since it prevents using elements which aren't bins. Instead we see if a collection was posted by the demuxer by the time a pad is added. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3601> 2022-12-19 15:22:15 +0100 Philipp Zabel <p.zabel@pengutronix.de> * gst/videoconvertscale/gstvideoconvertscale.c: videoconvertscale: fix valid_tags NULL-terminated array of strings The valid_tags array of strings must be NULL-terminated, as it is passed to the g_strv_contains() function. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3603> 2022-12-19 14:24:06 +0100 Guillaume Desmottes <guillaume.desmottes@onestream.live> * gst/playback/gsturidecodebin3.c: uridecodebin3: fix typo in doc Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3602> 2022-12-13 12:23:56 +0100 Thibault Saunier <tsaunier@igalia.com> * gst-libs/gst/video/navigation.h: base:navigation: Cleanup navigation key modifiers enum We were exposing the 'ALT' modifier as if we were guaranteeing its accuracy but truth is we were only exposing configuration dependent values. Make the API simpler for now, the same way as Gtk3 was exposing it, and when we have time to guarantee more values by making them take backends configuration into account, we will expose those values in a accurate way. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1402 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3565> 2022-11-30 04:04:09 +0000 Matthew Waters <matthew@centricular.com> * gst-libs/gst/gl/gstglupload.c: glupload: add CAN_ACCEPT_RAW to all dma-buf uploaders Fixes cases where a dma-buf would be uploaded using direct-dma-buf into an external-oes texture (using video/x-raw caps) and then attempting to reconfigure the same source. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3486> 2022-06-03 11:40:35 +0200 Guillaume Desmottes <guillaume.desmottes@onestream.live> * docs/plugins/gst_plugins_cache.json: * ext/gl/gstglvideomixer.c: glvideomixer: override sink pad template Allow us to pass the GType of its pad and so improve the documentation when inspecting glvideomixer. Fix #1253 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2527> 2022-12-12 13:43:30 +0000 Philippe Normand <philn@igalia.com> * gst-libs/gst/video/video-format.h: video-format: Add macro checking for validity of GstVideoFormatInfo Mostly to maintain consistency with the GST_AUDIO_FORMAT_INFO_IS_VALID_RAW macro. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2800> 2022-07-27 09:39:52 +0100 Philippe Normand <philn@igalia.com> * gst-libs/gst/audio/audio-format.c: * gst-libs/gst/audio/audio-format.h: audio-format: Add macro checking for validity of GstAudioFormatInfo `gst_audio_format_info_fill_silence()` not properly checking the validity of its input may lead it into an infinite loop. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2800> 2022-12-11 17:36:53 +0000 Tim-Philipp Müller <tim@centricular.com> * ext/pango/gsttimeoverlay.c: timeoverlay: fix pad leak Spotted by Jiri Uncovsky. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1336> 2022-12-07 14:49:05 +0200 Sebastian Dröge <sebastian@centricular.com> * ext/pango/gsttextrender.c: textrender: Negotiate caps on a GAP event if none were negotiated yet Otherwise downstream wouldn't have received a segment event either and wouldn't know what to do with the gap event And also forward any pending segment event. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3541> 2022-12-05 02:29:08 +0000 Tim-Philipp Müller <tim@centricular.com> * meson.build: Back to development === release 1.21.3 === 2022-12-05 01:28:21 +0000 Tim-Philipp Müller <tim@centricular.com> * NEWS: * RELEASE: * gst-plugins-base.doap: * meson.build: Release 1.21.3 2022-12-04 12:25:41 +0000 Tim-Philipp Müller <tim@centricular.com> * ChangeLog: * docs/random/ChangeLog-0.8: Remove ChangeLog files from git repository This information is tracked fully in the git repository, so no point having the ChangeLog duplicate it, and it interferes with grepping the repository. We are going to create the ChangeLogs on the fly when generating tarballs going forward (with a limited history), since it's still valuable for tarball consumers to be able to easily see a list of recent changes. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-project/-/issues/73 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3521> 2022-11-07 00:10:39 +0000 Tim-Philipp Müller <tim@centricular.com> * meson.build: * scripts/gen-changelog.py: meson: Generate ChangeLog files for release tarballs on dist Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3521> 2022-12-02 15:52:56 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gsturidecodebin3.c: uridecodebin3: Protect against NULL uri/suburi Fixes #1625 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3511> 2022-11-30 09:26:48 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gsturidecodebin3.c: uridecodebin3: Always store pending buffering messages Fixes #1586 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3487> 2022-11-30 20:48:28 +0200 Vivia Nikolaidou <vivia@ahiru.eu> * ext/opus/gstopusdec.c: opusdec: Use proper guint/guint8 type conversion Do not cast, that might yield wrong results. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3494> 2022-11-30 20:47:11 +0200 Vivia Nikolaidou <vivia@ahiru.eu> * ext/opus/gstopusdec.c: opusdec: Negotiate default to 2 channels In that place, dec->n_channels can still theoretically be 0. Default to 2 in that case. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3494> 2022-11-30 20:46:05 +0200 Vivia Nikolaidou <vivia@ahiru.eu> * ext/opus/gstopusenc.c: opusenc: Reverse channel order in template caps We want to make it so that we prefer a higher, not lower, number of channels. Otherwise, this pipeline would convert from 2 to 1 channels: gst-launch-1.0 audiotestsrc ! audio/x-raw,channels=2 ! opusenc ! queue ! opusdec ! queue ! opusenc ! fakesink Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3494> 2022-11-28 16:05:16 +0000 Philippe Normand <philn@igalia.com> * gst-libs/gst/audio/gstaudiodecoder.h: audiodecoder: Make data processing errors non-fatal by default The previous default value of `max-errors` was too small and would potentially trigger the decoder to emit errors too often for most cases. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3478> 2022-11-30 10:27:27 +0000 Philippe Normand <philn@igalia.com> * gst-libs/gst/video/gstvideodecoder.h: videodecoder: Make data processing errors non-fatal by default The previous default value of `max-errors` was too small and would potentially trigger the decoder to emit errors too often for most cases. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3478> 2022-11-29 14:02:55 +0200 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/sdp/gstsdpmessage.c: sdpmessage: Annotate SDP message parameters for `parse_uri()` and `parse_buffer()` correctly They are not actually `out` parameters but must be allocated and initialized to a valid SDP message by the caller. Just allocating them without initialization will cause memory corruptions because the functions will try to clear/append to the existing SDP message. As such they should be just marked as `transfer none`. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1605 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3484> 2022-11-28 10:19:20 +0100 Ignacio Casal Quinteiro <qignacio@amazon.com> * gst-libs/gst/sdp/gstsdpmessage.c: sdp: use g_strdup instead of strdup Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3475> 2022-11-25 10:01:06 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * ext/gl/gstglimagesink.c: glimagesink: Fix render rect assertion Whenever the surface is resized before the stream is negotiated, we endup with an assertion in libgstvideo. gst_video_center_rect: assertion 'src->h != 0' failed This fixes it, by following the style aready in place, which is to ensure surfaces have a minimum size of 1x1. Fixes #1139 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3467> 2022-11-26 09:23:59 +0100 Tim-Philipp Müller <tim@centricular.com> * gst-libs/gst/audio/gstaudiofilter.c: * gst/audioconvert/gstaudioconvert.c: * gst/audioresample/gstaudioresample.c: audioconvert, audioresample, audiofilter: fix divide by 0 for input buffer without caps gst-launch-1.0 audiotestsrc ! udpsink host=127.0.0.1 gst-launch-1.0 udpsrc ! audioconvert ! autoaudiosink would crash with a floating point exception when clipping the input buffer owing to a division by zero because no caps event was received. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3469> 2022-08-09 10:26:00 +0200 Edward Hervey <edward@centricular.com> * gst/playback/gsturidecodebin3.c: uridecodebin3: propagate about-to-finish for new inputs If the pending next urisourcebin is already draining, make sure we propagate it when activating it. Fixes gapless playback of small entries Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1588 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3457> 2022-08-10 16:52:23 +0200 Edward Hervey <edward@centricular.com> * gst/playback/gsturidecodebin3.c: uridecodebin3: Remove old fixme Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3457> 2022-08-09 16:31:26 +0200 Edward Hervey <edward@centricular.com> * gst/playback/gstdecodebin3.c: * gst/playback/gsturidecodebin3.c: (uri)decodebin3: Ensure group-id consistency Make sure that group-id of a given play item are made consistent from the start (sources) and all the way through the output. This ensures that we can reliably detect that we have switched to the next play item on the output of decodebin3 (and we can therefore properly free/release it) Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3457> 2022-08-09 10:42:22 +0200 Edward Hervey <edward@centricular.com> * gst/playback/gsturidecodebin3.c: uridecodebin3: Fix shutdown procedures in probe When shutting down, we want to remove the urisourcebin blocking probes ... but we also want to propagate a GST_FLOW_FLUSHING upstream (and not GST_FLOW_NOT_LINKED) to make the upstream task gracefully stop instead of posting an error message. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3457> 2022-08-05 16:58:08 +0200 Edward Hervey <edward@centricular.com> * gst/playback/gstdecodebin3.c: decodebin3: Properly reset when going back to READY Clear the remaining stream-related fields when going from PAUSED to READY, and use when disposing. Fixes various issues when re-using decodebin3/playbin3 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3457> 2022-08-05 10:37:23 +0200 Edward Hervey <edward@centricular.com> * gst/playback/gstdecodebin3.c: decodebin3: Don't output bogus GST_MESSAGE_STREAMS_SELECTED When `is_selection_done` is called, it checks that all the requested streams are present in the active stream list ... ... except there could very well be a (about to be removed) stream from the previous selection present. Therefore filter the list of streams we add to the message by the streams which are actually requested. Fixes issues when switching between different stream types (ex: video-only to audio-only). Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3457> 2022-11-21 15:12:26 +0100 Edward Hervey <edward@centricular.com> * ext/ogg/gstoggdemux.c: oggdemux: Don't leak pending seek event Make sure any pending seek event is released when going back down to READY. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3443> 2022-11-21 15:10:35 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gstparsebin.c: parsebin: Don't leak parsepad list on shutdown Free it as it is down in other cases Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3443> 2022-11-21 18:47:50 +0200 Sebastian Dröge <sebastian@centricular.com> * ext/pango/gsttextrender.c: * ext/pango/gsttextrender.h: textrender: Don't pass plaintext as pango markup to Pango Otherwise e.g. & in the text will cause Pango to complain about invalid markup and render the text incorrectly. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3445> 2022-11-21 18:43:54 +0200 Sebastian Dröge <sebastian@centricular.com> * ext/pango/gsttextrender.c: textrender: Don't blindly forward all events Use gst_pad_event_default(), which does the right thing by default. Especially it does not forward text/x-plain caps downstream. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3445> 2022-11-16 11:47:54 -0500 Matt Crane <matt@standard.ai> * gst-libs/gst/rtp/gstrtpbasedepayload.c: rtpbasedepayload: Drop redundant reference timestamp buffer meta in RTP depayloaders Currently, when rtspsrc property add-reference-timestamp-metadata=true, a downstream rtph264depay element will attach multiple copies of the same GstReferenceTimestampMeta to the depayloaded media buffers. This can have signficant performance impacts further downstream in a pipeline like the following: rtspsrc add-reference-timestamp-metadata=true ! rtph264depay ! h264parse ! ... ! rtph264pay ! ... For example, if there are 10 packet buffers for a frame of RTP H.264 video, each of those packet buffers will contain the same reference timestamp meta. The rtph264depay element will then attach all 10 metadata to the depayloaded frame. And then later when we payload the frame buffer again for proxying, we now have 10 more buffers each with 10 instance of the same metadata. Allocating/deallocating 100+ instances of metadata @ 30fps for multiple streams has a pretty large performance impact. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1578 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3431> 2022-11-16 15:17:24 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst-libs/gst/video/video-frame.c: video-frame: Avoid using tile width The tile width in pixel is not always available. Notably for 8L128 10bit format, the tile is 8x128 bytes, and the pixel format is fully packed. That means that the tile contains at least 6 pixels per line, but it also hold some bits of the pixel from the same line on the previous or next tile. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3424> 2022-11-15 13:50:13 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst-libs/gst/gl/egl/gsteglimage.c: * gst-libs/gst/gl/gstglcolorconvert.c: * gst-libs/gst/gl/gstglmemory.c: * gst-libs/gst/gl/gstglutils.c: * gst-libs/gst/video/video-format.c: * gst-libs/gst/video/video-format.h: * gst-libs/gst/video/video-frame.c: * gst-libs/gst/video/video-info.c: * gst-libs/gst/video/video-tile.h: * gst/rawparse/gstrawvideoparse.c: video: Add arbitrary tile dimensions support In current tile representation, only tiles with power of two width and height in bytes are supported. This limitation prevents adding more complex tiles formats. In this patch, we deprecate tile_ws and tile_hs from GstVideoFormatInfo and replace if with an array of GstVideoTileInfo. Each plane tiles are then described with their pixels width/height, line stride and total size. The helper gst_video_format_info_get_tile_sizes() that depends on the deprecated API is also being removed. This can simply be removed as it wasn't in any stable release yet. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3424> 2022-11-18 14:24:30 +0100 Mathieu Duponchelle <mathieu@centricular.com> * gst-libs/gst/audio/gstaudioaggregator.c: * gst-libs/gst/video/gstvideoaggregator.c: aggregator: Implement force_live API Setting force_live lets aggregator behave as if it had at least one of its sinks connected to a live source, which should let us get rid of the fake live test source hack that is probably present in dozens of applications by now. + Expose API for subclasses to set and get force_live + Expose force-live properties in GstVideoAggregator and GstAudioAggregator + Adds a simple test Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3008> 2022-11-17 15:41:35 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gstdecodebin2.c: decodebin2: Minor debug fix for decodepad decodedad might have their name changed when exposing, causing a race when trying to get their name without taking a lock. Just use GST_PTR_POINTER in debug statements instead Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3428> 2022-11-14 14:18:30 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gsturisourcebin.c: urisourcebin: Remove un-needed define This code hasn't use GValueArray in ages Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784> 2022-11-14 14:17:25 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gsturisourcebin.c: urisourcebin: Use a non-buffering multiqueue for non-streamable URI Even though buffering is not required, we need to ensure we are dealing with the interleave (if any) before pushing the elementary streams further downstream. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784> 2022-11-10 10:27:48 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gsturisourcebin.c: urisourcebin: Minor doc fix Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784> 2022-10-01 04:38:53 +1000 Jan Schmidt <jan@centricular.com> * gst/playback/gsturidecodebin3.c: uridecodebin3: Don't leak EOS event Make sure to unref the EOS event in all code paths when returning GST_PAD_PROBE_HANDLED Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784> 2022-07-21 16:43:47 +0200 Edward Hervey <edward@centricular.com> * docs/plugins/gst_plugins_cache.json: * gst/playback/gstplaybin3.c: * gst/playback/gsturidecodebin3.c: * tools/gst-play.c: playbin3: Move gapless to uridecodebin3 This was the intention from the start, just took me a few years *cough* to actually implement it properly. Gapless is handled by re-using as much as possible the same decoders and sinks if present, and only pre-rolling switching at the sources level (with buffering if/when needed). In order to enable "gapless" playback, the "next" uri should be set at any time between the moment the `about-to-finish` signal is emitted and the moment the current play item is done. Previously this could only be done with the signal emission. This new implementation also allows "Instantaneous URI switching". This allows a much faster way of switching playback entries while re-using as many elements as possible. To enable this set `instant-uri` property to TRUE, the default being FALSE. API: instant-uri properties Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784> 2022-11-10 07:16:11 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gstplaybin3.c: playbin3: Remove unused code This was never used, and if ever it's needed at some point for reference it's available in gstplaybin.c Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784> 2022-11-14 09:54:24 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gstdecodebin3.c: decodebin3: Clear input collection when linked again The previous collection no longer applies to this input Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784> 2022-11-14 09:37:28 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gstdecodebin3.c: decodebin3: Improve collection merging If the collections are the same, don't merge them Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784> 2022-11-10 06:58:50 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gstdecodebin3-parse.c: * gst/playback/gstdecodebin3.c: decodebin3: doc cleanup Remove old/invalid FIXME and cleanup some logs Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784> 2022-11-10 06:54:21 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gstdecodebin3.c: decodebin3: Remove unused variable Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784> 2022-11-10 09:13:35 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gstdecodebin3.c: decodebin3: Allow re-using inputs DecodebinInput (and their backing parsebin or identity) are no longer released when the corresponding sinkpad is unlinked, but when it's released. The parsebin element will be resetted: * If incoming caps are incompatible (was the case before) * Or when unlinking and it was previously pull-based This opens the way to use decodebin3 with changing inputs (i.e. gapless) Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784> 2022-11-09 16:51:51 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gsturidecodebin3.c: uridecodebin3: use urisourcebin parse-streams property Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784> 2022-11-09 16:44:18 +0100 Edward Hervey <edward@centricular.com> * docs/plugins/gst_plugins_cache.json: * gst/playback/gsturisourcebin.c: urisourcebin: Improve buffering handling Introduce the option to have the streams be parsed with `parsebin` for compatible sources (i.e. which are eligible for buffering in the same way as before this commit). By parsing the inputs directly, this allows more accurate buffering control: * Instead of relying on potential bitrate information coming from somewhere * and *without* being linked downstream If `parse-streams` is activated and the stream is eligible for buffering, then a `multiqueue` will be used on the output of `parsebin` in order to handle the buffering. API: `parse-streams` Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784> 2022-11-09 10:33:22 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gstparsebin.c: parsebin: avoid bogus processing If a parsebin pad is already exposed, don't try to rename it or cause extra processing which isn't needed Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784> 2022-11-09 10:26:41 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gstdecodebin3-parse.c: * gst/playback/gstdecodebin3.c: decodebin3: Avoid parsebin usage if not needed If the incoming streams are already parsed, there is no need to add yet-another parsebin to process it *IF* that stream is compatible with a decoder or the decodebin3 output caps. This only applies if all the following conditions are met: * The incoming stream can *NOT* do pull-based scheduling * The incoming stream provides a `GstStream` and `GstStreamCollection` * The caps are compatible with either the decodebin3 output caps or a decoder input If all those conditions are met, a identity element is used instead of a parsebin element and the same code paths are taken. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784> 2022-11-09 10:18:25 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gstdecodebin3-parse.c: decodebin3: DecodebinInputStream: Hold a ref to srcpad And move the locking outside of the input stream creation function Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784> 2022-11-07 10:01:57 +0100 Edward Hervey <edward@centricular.com> * docs/plugins/gst_plugins_cache.json: * gst/playback/gsturisourcebin.c: urisourcebin: Bring high-watermark level in sync with legacy values It was always 60%. For some reason this crept in during the initial urisourcebin refactoring. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784> 2022-11-07 09:49:02 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gstdecodebin3.c: decodebin3: Don't leak collection when releasing inputs And refactor the function slightly for clarity Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784> 2022-11-05 09:20:03 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gstdecodebin3.c: decodebin3: Protect input freeing with the input lock Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784> 2022-11-05 09:16:41 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gstdecodebin3-parse.c: * gst/playback/gstdecodebin3.c: decodebin3: Refactor parsebin output handling * Instead of creating temporary `PendingPad` structures, always create a DecodebinInputStream for every pad of parsebin * Remove never used `pending_stream` field from DecodebinInputStream * When unblocking a given DecodebinInput (i.e. wrapping a parsebin), also make sure that other parsebins from the same GstStreamCollection are unblocked since they come from the same source Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784> 2022-11-05 09:19:29 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gstdecodebin3.c: decodebin3: Store GstStreamCollection from upstream If upstream provides stream collection, use/store them as soon as possible Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784> 2022-11-01 10:30:19 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gsturisourcebin.c: urisourcebin: Move adaptive demuxer handling into ChildSrcPadInfo It's part of that chain of elements Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784> 2022-11-01 09:53:36 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gsturisourcebin.c: urisourcebin: Only remove components in PAUSED->READY With the refactoring, we are guaranteed the components are only created in PAUSED Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784> 2022-11-01 09:49:39 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gsturisourcebin.c: urisourcebin: Refactor ChildSrcPadInfo and OutputSlot usage Make an explicit topology/tree of structures: * ChildSrcPadInfo is created for each source element source pad * ChildSrcPadInfo contains the chain of optional elements specific to that pad (ex: typefind) * A ChildSrcPadInfo links to one or more OutputSlot, which contain what is specific to the output (i.e. optional buffering and ghostpad) * No longer use GObject {set|get}_data() functions to store those structures and instead make them explicit * Pass those structures around explicitely in each function/callback Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784> 2022-10-31 06:13:31 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gsturisourcebin.c: urisourcebin: Remove duplicate call We ensure sources are removed in PAUSED->READY->NULL. No need to call it when creating the source. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784> 2022-10-27 14:30:30 +0200 Edward Hervey <edward@centricular.com> * gst/playback/gsturisourcebin.c: urisourcebin: Remove pending pad handling This was needed to support the legacy handling of changing streams (add new pads, send EOS and remove old pads). Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784> 2022-10-27 11:47:56 +0200 Edward Hervey <edward@centricular.com> urisourcebin: Only expose pads once activation has completed The following problem could happen: * Thread 1 : urisourcebin gets activated from READY->PAUSED * Thread 2 : some element causes a pad to be added to urisourcebin , which gets linked downstream, which decides to activate upstream to pull-based. * That requires "activating" the pads from PUSH to NONE, and then from NONE to PULL * Thread 1 : the base class state change handlers checks if all pads are activated The issue is that since going form PUSH to PULL requires going through NONE, there is a window during which: * Thread 1 : The pad was set to NONE (before being set to PULL) * Thread 2 : The base class activates that pad (to PUSH) * Thread 1 : The attempt to "activate" to PULL fails (silently or not) This is very racy, so in order to avoid that, we make sure that we only add pads once the transition from READY->PAUSED in the parent classes is done. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784> 2022-10-26 07:04:52 +0200 Edward Hervey <edward@centricular.com> * gst/playback/gsturisourcebin.c: urisourcebin: Only allow streams-aware adaptive demuxer We no longer want to deal with elements that use the old-style of stream switching and instead expose/remove streams as they appear/disappear Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784> 2022-10-25 17:13:21 +0200 Edward Hervey <edward@centricular.com> * gst/playback/gsturisourcebin.c: urisourcebin: Simplify initial information collection When iterating existing pads of a source, directly handle them: * Raw pads are handled directly * Pads without caps are connected to a typefind * Other pads are handled via `handle_new_pad()` Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784> 2022-10-25 11:15:05 +0200 Edward Hervey <edward@centricular.com> * gst/playback/gsturisourcebin.c: urisourcebin: Use iterator function where applicable Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784> 2022-10-25 11:13:49 +0200 Edward Hervey <edward@centricular.com> * gst/playback/gsturisourcebin.c: urisourcebin: Document and rename fields Removes ambiguity when reading the code Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784> 2022-10-25 11:05:45 +0200 Edward Hervey <edward@centricular.com> * gst/playback/gsturisourcebin.c: urisourcebin: Remove unused lock/list Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784> 2022-10-25 10:46:40 +0200 Edward Hervey <edward@centricular.com> * gst/playback/gsturisourcebin.c: urisourcebin: Check for live source when generating element Instead of at a later stage Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784> 2022-10-19 12:28:41 +0200 Edward Hervey <edward@centricular.com> * gst/playback/gsturisourcebin.c: urisourcebin: Streamline demuxer removal And since remove_source also removes the dmeuxer, we no longer need to call it in addition Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784> 2022-10-19 11:03:03 +0200 Edward Hervey <edward@centricular.com> * gst/playback/gsturisourcebin.c: urisourcebin: Clarify function name and arguments * The "need_queue" variable is only used in one place, move it there * Clarify the fact the function also exposes raw_pads Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784> 2022-10-19 11:00:09 +0200 Edward Hervey <edward@centricular.com> * gst/playback/gsturisourcebin.c: urisourcebin: Error out if a source doesn't expose pads Looks like this fell through the cracks. If a source element doesn't have dynamic pads and doesn't provide any source pad ... we should properly error out. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784> 2022-11-14 12:44:05 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/pbutils/codec-utils.c: pbutils: Fix vp9 mime mapping when caps when no chroma-site. It's possible to have 4:2:0 chroma format without chroma-site in caps, but it isn't validated by the current code. This patch fixes it. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3405> 2022-11-14 20:38:09 +0200 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/video/gstvideodecoder.c: videodecoder: Consider having output data when the subclass drops a frame The subclass might drop a frame for QoS reasons (e.g. vpxdec) and if all frames are dropped because of that it wouldn't make sense to post an error message on EOS. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3408> 2022-11-14 07:26:25 +0100 Edward Hervey <edward@centricular.com> * ext/ogg/gstoggdemux.c: oggdemux: Don't leak incoming EOS event If we're going to drop it ... then do drop it :) Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3400> 2022-11-12 11:35:58 +0100 Edward Hervey <edward@centricular.com> * gst-libs/gst/pbutils/encoding-profile.c: pbutils/encoding-profile: Streamline cleanup Cleanup all local variables in one place, and ensure failure cases go through there. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3390> 2022-11-11 14:18:21 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gststreamsynchronizer.c: streamsynchronizer: Don't leak the syncstream object It was leaked when breaking out early when handling GST_EVENT_STREAM_START Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3390> 2022-11-12 10:00:01 +0100 Edward Hervey <edward@centricular.com> * gst/encoding/gstencodebasebin.c: encodebasebin: Don't leak muxer pad Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3390> 2022-11-12 09:58:41 +0100 Edward Hervey <edward@centricular.com> * gst-libs/gst/pbutils/encoding-profile.c: pbutils/encoding-profile: Don't leak string array It was never freed Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3390> 2022-11-10 09:49:41 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst/rawparse/gstrawvideoparse.c: rawvideoparse: Fix support for sub-sampled tile This element was missed as it does not use the new helpers to calculate the plane size. The code is relatively simple though, so adding support for subsample tiles was easy enough. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3385> 2022-11-08 17:47:10 +0000 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst-libs/gst/gl/gstglcolorconvert.c: * gst-libs/gst/gl/gstglupload.c: gstgl: Fix handling of padded tile formats When a tile format is padded and imported as DMABuf, the stride contains the information about the actual width and height in number of tiles. This information is needed by the detiling shader in order accuratly calculate the location of pixels. To fix that, we also copy the offset and strides into the otuput format and the converter will ensure that the shader is recompiled whenever the stride changes. This fixes video corruptions observed when decoding on MT8195 with videos that aren't not aligned to 64bytes in width. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3365> 2022-11-08 22:42:58 +0800 Talha Khan <talha@averred.net> * docs/plugins/gst_plugins_cache.json: * gst/videoconvertscale/gstvideoconvert.c: * gst/videoconvertscale/gstvideoconvertscale.c: videoconvert, videoscaleconvert: fix element description Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3362> 2022-11-08 02:08:08 +0000 Tim-Philipp Müller <tim@centricular.com> * meson.build: Back to development Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3358> === release 1.21.2 === 2022-11-07 23:53:59 +0000 Tim-Philipp Müller <tim@centricular.com> * ChangeLog: * NEWS: * RELEASE: * gst-plugins-base.doap: * meson.build: Release 1.21.2 2022-11-07 23:53:57 +0000 Tim-Philipp Müller <tim@centricular.com> * ChangeLog: Update ChangeLogs for 1.21.2 2022-11-07 20:31:25 +0200 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/pbutils/gstdiscoverer-types.c: discoverer: Annotate `DiscovererInfo::get_audio_streams()` and others with the concrete stream info type Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3353> 2022-11-05 07:34:27 +0100 Edward Hervey <edward@centricular.com> * gst/subparse/gstsubparse.c: subparse: Fix non-closed tag handling. Unclear what the goal was, but we could end up reading way past the next_tag. Instead just move everything from after the end tag ('>') to the next_tag. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=53040 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3340> 2022-10-31 16:06:45 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gstparsebin.c: parsebin: Fix leak Release the reference on the collection which was given to us when extracting it from the event/message. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3319> 2022-10-13 22:15:58 +0530 Sanchayan Maity <sanchayan@asymptotic.io> * gst/playback/gstplaybin3.c: playbin3: Fix missing pad unref GST_TRACERS="leaks" GST_DEBUG="GST_TRACER:7,leaks:6" gst-play-1.0 --use-playbin3 test.mkv When running a pipeline like above, leaks are observed. 0:00:56.882419132 240637 0x5562c528ccc0 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstConcatPad, address=(gpointer)0x7efd7c0d20a0, description=(string)<'':sink_0>, ref-count=(uint)1, trace=(string); 0:00:56.882429131 240637 0x5562c528ccc0 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstConcatPad, address=(gpointer)0x7efd7c0d2be0, description=(string)<'':sink_0>, ref-count=(uint)1, trace=(string); 0:00:56.882437056 240637 0x5562c528ccc0 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstConcatPad, address=(gpointer)0x7efd7c0d3720, description=(string)<'':sink_0>, ref-count=(uint)1, trace=(string); gst_element_release_request_pad does not unref the pad. It needs to be followed by gst_object_unref. Doing that fixes the above leaks. Use g_ptr_array_new_with_free_func with gst_object_unref as the free function to unref the pad after release. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3177> 2022-10-26 13:42:59 +1100 Matthew Waters <matthew@centricular.com> * gst-libs/gst/pbutils/codec-utils.c: pbutils: add correct mime mapping for vp9 Based on https://www.webmproject.org/vp9/mp4/#codecs-parameter-string Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3260> 2022-10-27 15:13:36 +0300 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/app/gstappsrc.c: * gst-libs/gst/audio/gstaudiodecoder.c: * gst-libs/gst/audio/gstaudioencoder.c: * gst-libs/gst/video/gstvideoencoder.c: core/base: Only post latency messages if the latency values have actually changed Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1525 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3282> 2022-10-27 07:21:19 +0200 Edward Hervey <edward@centricular.com> * gst-libs/gst/video/gstvideodecoder.c: videodecoder: Only post latency message if it changed Posting latency messages causes a full and potentially expensive latency recalculation of the pipeline. While subclasses should check whether the latency really changed or not before calling this function, we ensure that we do not post such messages if it didn't change. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3282> 2022-10-26 10:25:43 +0200 Daniels Umanovskis <du@axentia.se> * sys/ximage/ximagesink.c: * sys/xvimage/xvcontext.c: ximagesink, xvimagesink: set the _NET_WM_PID atom on the window This makes it easier for X11 window management to work with windows created by these sinks Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3267> 2022-10-25 09:39:07 +0300 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/gl/gstgldisplay.c: * gst-libs/gst/gl/gstglshader.c: * gst-libs/gst/pbutils/gstdiscoverer.c: * gst-libs/gst/rtsp/gstrtspconnection.c: * gst-libs/gst/rtsp/gstrtspmessage.c: * gst-libs/gst/sdp/gstmikey.c: Fix various warnings from gobject-introspection Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3261> 2022-10-21 21:50:01 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst-libs/gst/gl/cocoa/gstgl_cocoa_private.h: * gst-libs/gst/gl/cocoa/gstglcontext_cocoa.m: * gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m: gl/vulkan: Fix static linking on macOS duplicate symbol '__invoke_on_main' in: /Library/Frameworks/GStreamer.framework/Versions/1.0/lib/libgstvulkan-1.0.a(cocoa_gstvkwindow_cocoa.m.o) /Library/Frameworks/GStreamer.framework/Versions/1.0/lib/libgstgl-1.0.a(cocoa_gstglwindow_cocoa.m.o) ld: 1 duplicate symbol for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) Also make the same change in iOS for consistency. Continuation of https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1132 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3242> 2022-10-04 05:39:51 +0100 Matthew Waters <matthew@centricular.com> * gst-libs/gst/gl/meson.build: build/gl: fix automatic dispmanx detection for rpi4 rpi4 doesn't contain dispmanx but still contains bcm_host.pc which confuses the configure detection. Add an explicit check for EGL_DISPMANX_WINDOW_T to ensure that we only build with dispmanx when the types are available. Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/893 Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/952 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3230> 2022-10-19 22:08:17 +1100 Matthew Waters <matthew@centricular.com> * gst-libs/gst/gl/gstglcontextconfig.c: docs/glcontextconfig: rename title to not be GstGLContext Can be confusing havint two pages that both have GstGLContext as the title. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3227> 2022-07-06 21:45:24 +0300 Jordan Petridis <jordan@centricular.com> * ext/cdparanoia/meson.build: cdparanoia: Ignore compiler warning coming from the cdparanoia header When trying to build the plugin, GCC starts complaining about issues with one of the cdparanoia headers and it block us from being able to build the plugin with Werror. The current warning in the header look like this: ``` [1/2] Compiling C object subprojects/gst-plugins-base/ext/cdparanoia/libgstcdparanoia.so.p/gstcdparanoiasrc.c.o In file included from ../subprojects/gst-plugins-base/ext/cdparanoia/gstcdparanoiasrc.h:37, from ../subprojects/gst-plugins-base/ext/cdparanoia/gstcdparanoiasrc.c:31: /usr/include/cdda/cdda_interface.h:164:3: warning: initialization discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers] 164 | "Success", | ^~~~~~~~~ ... /usr/include/cdda/cdda_interface.h:163:14: warning: ‘strerror_tr’ defined but not used [-Wunused-variable] 163 | static char *strerror_tr[]={ | ^~~~~~~~~~~ [2/2] Linking target subprojects/gst-plugins-base/ext/cdparanoia/libgstcdparanoia.so ``` Last release of cdparanoia was in 2008, so our best bet for the time is to ignore the warnings. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2722> 2022-10-17 14:43:42 +0300 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/sdp/gstmikey.c: * gst-libs/gst/sdp/gstsdpmessage.c: sdp: Add/fix various annotations Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3194> 2022-10-17 14:51:03 +0300 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/tag/gstid3tag.c: * gst-libs/gst/tag/gstvorbistag.c: * gst-libs/gst/tag/gstxmptag.c: * gst-libs/gst/tag/id3v2.c: * gst-libs/gst/tag/lang.c: * gst-libs/gst/tag/licenses.c: * gst-libs/gst/tag/tags.c: tag: Add/fix various annotations Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3194> 2022-10-17 11:31:05 +0300 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/allocators/gstdmabuf.c: * gst-libs/gst/allocators/gstfdmemory.c: allocators: Add/fix various annotations Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3194> 2022-10-15 12:16:01 +0300 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/gl/cocoa/gstgldisplay_cocoa.m: * gst-libs/gst/gl/egl/gsteglimage.c: * gst-libs/gst/gl/egl/gstgldisplay_egl.c: * gst-libs/gst/gl/egl/gstgldisplay_egl_device.c: * gst-libs/gst/gl/gstglbasememory.c: * gst-libs/gst/gl/gstglbasememory.h: * gst-libs/gst/gl/gstglbufferpool.c: * gst-libs/gst/gl/gstglcolorconvert.c: * gst-libs/gst/gl/gstglcontext.c: * gst-libs/gst/gl/gstgldisplay.c: * gst-libs/gst/gl/gstglformat.c: * gst-libs/gst/gl/gstglshader.c: * gst-libs/gst/gl/gstglsl.c: * gst-libs/gst/gl/gstglviewconvert.c: * gst-libs/gst/gl/viv-fb/gstgldisplay_viv_fb.c: * gst-libs/gst/gl/wayland/gstgldisplay_wayland.c: * gst-libs/gst/gl/x11/gstgldisplay_x11.c: gl: Add/fix various annotations And fix a memory leaks in gst_gl_display_egl_new() error cases. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3194> 2022-10-15 00:19:53 +0300 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/pbutils/codec-utils.c: * gst-libs/gst/pbutils/descriptions.c: * gst-libs/gst/pbutils/encoding-profile.c: * gst-libs/gst/pbutils/encoding-target.c: * gst-libs/gst/pbutils/gstdiscoverer-types.c: * gst-libs/gst/pbutils/gstdiscoverer.c: * gst-libs/gst/pbutils/missing-plugins.c: pbutils: Add/fix various annotations Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3194> 2022-10-15 00:00:03 +0300 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/rtp/gstrtcpbuffer.c: * gst-libs/gst/rtp/gstrtpbasedepayload.c: * gst-libs/gst/rtp/gstrtpbasepayload.c: * gst-libs/gst/rtp/gstrtpbuffer.c: * gst-libs/gst/rtp/gstrtphdrext.c: * gst-libs/gst/rtp/gstrtpmeta.c: * gst-libs/gst/rtp/gstrtppayloads.c: rtp: Add/fix various annotations Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3194> 2022-10-14 23:52:40 +0300 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/rtsp/gstrtspconnection.c: * gst-libs/gst/rtsp/gstrtspdefs.c: * gst-libs/gst/rtsp/gstrtspmessage.c: * gst-libs/gst/rtsp/gstrtsptransport.c: * gst-libs/gst/rtsp/gstrtspurl.c: rtsp: Add/fix various annotations Also initialize out parameters so that they don't have an undefined value in case of errors. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3194> 2022-10-14 22:08:07 +0300 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/app/gstappsink.c: * gst-libs/gst/app/gstappsrc.c: app: Add/fix various annotations Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3194> 2022-10-14 22:04:00 +0300 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/audio/audio-channel-mixer.c: * gst-libs/gst/audio/audio-converter.c: * gst-libs/gst/audio/audio-info.c: * gst-libs/gst/audio/audio-resampler.c: * gst-libs/gst/audio/audio.c: * gst-libs/gst/audio/gstaudiobasesink.c: * gst-libs/gst/audio/gstaudiobasesrc.c: * gst-libs/gst/audio/gstaudiodecoder.c: * gst-libs/gst/audio/gstaudioencoder.c: audio: Add/fix various annotations Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3194> 2022-10-14 21:59:43 +0300 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/video/gstvideodecoder.c: * gst-libs/gst/video/gstvideoencoder.c: * gst-libs/gst/video/gstvideometa.c: * gst-libs/gst/video/gstvideotimecode.c: * gst-libs/gst/video/video-anc.c: * gst-libs/gst/video/video-anc.h: * gst-libs/gst/video/video-converter.c: * gst-libs/gst/video/video-format.c: * gst-libs/gst/video/video-info.c: * gst-libs/gst/video/video-multiview.c: * gst-libs/gst/video/video-overlay-composition.c: * gst-libs/gst/video/video-sei.h: video: Add/fix various annotations Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3194> 2022-10-17 13:01:53 +0200 Edward Hervey <edward@centricular.com> * gst/playback/gsturisourcebin.c: urisourcebin: Fix usage of raw and non-raw source provider The computation in analyze_source was wrong, and would state that the element has "all raw source pads" if it had at least one. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1029 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3199> 2022-10-17 18:38:43 +0300 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/rtp/gstrtpbuffer.c: * tests/check/libs/rtp.c: rtpbuffer: Initialize extended timestamp to the first wraparound period This allows correct handling of wrapping around backwards during the first wraparound period and avoids the infamous "Cannot unwrap, any wrapping took place yet" error message. It allows makes sure that for actual timestamp jumps a valid value is returned instead of 0, which then allows the caller to handle it properly. Not having this can have the caller see the same timestamp (0) for a very long time, which for example can cause rtpjitterbuffer to output the same timestamp for a very long time. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1500 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3202> 2022-10-14 16:12:45 +0200 Edward Hervey <edward@centricular.com> * tools/gst-play.c: gst-play: Don't leak the stream collection We are given a reference to the collection when parsing it from the message. Just store it (instead of referencing it again). Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3186> 2022-10-13 11:21:42 -0400 Julian Bouzas <julian.bouzas@collabora.com> * docs/plugins/gst_plugins_cache.json: * gst-libs/gst/riff/riff-media.c: riff: Mark jpeg as parsed This is needed so that autoplugging works with avidemux and JPEG decoders that need parsed sink caps (eg rockchip 'mppjpegdec' decoder). It also works fine with 'jpegdec' decoder regardless. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3175> 2022-10-07 11:46:29 -0300 Thibault Saunier <tsaunier@igalia.com> * gst/videorate/gstvideorate.c: videorate: Do not close segment when getting a same segment twice Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3059> 2022-09-14 16:39:48 -0300 Thibault Saunier <tsaunier@igalia.com> * gst/videorate/gstvideorate.c: * gst/videorate/gstvideorate.h: * tests/validate/meson.build: * tests/validate/videorate/fill_segment_after_caps_changed_before_eos.validatetest: * tests/validate/videorate/fill_segment_after_caps_changed_before_eos/flow-expectations/log-videorate-sink-expected: * tests/validate/videorate/fill_segment_after_caps_changed_before_eos/flow-expectations/log-videorate-src-expected: videorate: Handle closing segment on EOS right after caps event The scenario is what we try in the tests: - we have a segment with .stop set - some frame(s) flow - we get a CAPS event - we get an EOS (before getting buffers after the CAPS event) in that case, without that patch, the segment is not properly closed which is not correct. In this patch we keep track of previous caps until a new buffer arrives, this way in that situation we set previous caps again, and close the segment with the previous buffer. Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1352 in this specific case Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3059> 2022-08-22 16:33:23 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst-libs/gst/gl/egl/gsteglimage.c: opengl: Fix usage of eglCreate/DestroyImage The implementation was inconsistent between create and destroy. EGLImage creation and destruction is requires for EGL 1.5 and up, while otherwise the KHR version is only available if EGL_KHR_image_base feature is set. Not doing these check may lead to getting a function pointer to a stub, which is notably the case when using apitrace. Fixes #1389 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2925> 2022-10-06 16:23:56 +0200 Aleksandr Slobodeniuk <aslobodeniuk@fluendo.com> * gst/playback/gstdecodebin3.c: decodebin3: allow to call "dispose" multiple times https://docs.gtk.org/gobject/concepts.html#reference-counts-and-cycles Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3135> 2022-10-06 13:03:26 +0200 Aleksandr Slobodeniuk <aslobodeniuk@fluendo.com> * gst/playback/gstdecodebin3.c: decodebin3: fix mutex leaks Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3126> 2022-10-03 15:20:53 -0300 Thibault Saunier <tsaunier@igalia.com> * gst/playback/gstdecodebin3-parse.c: decodebin3: Do not try to plug a decoder on raw formats Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3123> 2022-10-06 00:00:59 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/video/gstvideosink.c: videosink: Don't return unknown end-time from get_times() ... in case of reverse playback. Otherwise basesink will not wait for clock Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3121> 2021-07-02 16:22:04 +0800 Haihao Xiang <haihao.xiang@intel.com> * gst-libs/gst/gl/egl/gsteglimage.c: eglimage: fix Y412_LE DMABuf import support This fixed the error below: GST_GL_PLATFORM=egl gst-launch-1.0 videotestsrc ! msdkvpp ! "video/x-raw(memory:DMABuf),format=Y412_LE" ! glimagesink 0:00:00.063737691 576978 0x557c11266920 ERROR gleglimage gsteglimage.c:577:_drm_rgba_fourcc_from_info: Unsupported format for DMABuf. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1389> 2021-07-02 16:01:19 +0800 Haihao Xiang <haihao.xiang@intel.com> * gst-libs/gst/gl/egl/gsteglimage.c: eglimage: add Y410 DMABuf import support This fixed the error below: GST_GL_PLATFORM=egl gst-launch-1.0 videotestsrc ! msdkvpp ! \ "video/x-raw(memory:DMABuf),format=Y410" ! glimagesink 0:00:00.040553883 576732 0x55be9b35f920 ERROR gleglimage gsteglimage.c:577:_drm_rgba_fourcc_from_info: Unsupported format for DMABuf. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1389> 2021-07-02 20:31:22 +0800 Haihao Xiang <haihao.xiang@intel.com> * gst-libs/gst/gl/egl/gsteglimage.c: eglimage: add Y212_LE / Y212_BE DMABuf import support This fixed the error below: GST_GL_PLATFORM=egl gst-launch-1.0 videotestsrc ! msdkvpp \ ! "video/x-raw(memory:DMABuf),format=Y212_LE" ! glimagesink 0:00:00.148086281 575148 0x562a6d36d920 ERROR gleglimage gsteglimage.c:555:_drm_rgba_fourcc_from_info: Unsupported format for DMABuf. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1389> 2021-07-02 15:37:19 +0800 Haihao Xiang <haihao.xiang@intel.com> * gst-libs/gst/gl/egl/gsteglimage.c: eglimage: add Y210 DMABuf import support This fixed the error below: GST_GL_PLATFORM=egl gst-launch-1.0 videotestsrc ! msdkvpp ! \ "video/x-raw(memory:DMABuf),format=Y210" ! glimagesink 0:00:00.039881627 571365 0x56245eba6920 ERROR gleglimage gsteglimage.c:549:_drm_rgba_fourcc_from_info: Unsupported format for DMABuf Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1389> 2022-10-04 03:57:31 +0100 Tim-Philipp Müller <tim@centricular.com> * meson.build: Back to development Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3115> === release 1.21.1 === 2022-10-04 01:14:01 +0100 Tim-Philipp Müller <tim@centricular.com> * ChangeLog: * NEWS: * RELEASE: * gst-plugins-base.doap: * meson.build: Release 1.21.1 2022-10-04 01:13:59 +0100 Tim-Philipp Müller <tim@centricular.com> * ChangeLog: Update ChangeLogs for 1.21.1 2022-10-01 02:33:49 +1000 Jan Schmidt <jan@centricular.com> * gst/playback/gstplaysink.c: * gst/playback/gstplaysinkaudioconvert.c: * gst/playback/gstplaysinkaudioconvert.h: playsink: Hold a reference to the soft volume element Always hold a reference to the soft volume element provided by the playsinkaudioconvert bin helper, the same as when volume is provided by a sink element, or the soft volume element gets unreffed too soon. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3108> 2022-10-01 04:51:21 +1000 Jan Schmidt <jan@centricular.com> * sys/xvimage/xvimageallocator.c: xvimagesink: Don't leak XvShmImage If allocating an XvShmImage generates an X error, but still returns some allocated memory, make sure to free it so it doesn't leak. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3100> 2022-10-01 04:49:16 +1000 Jan Schmidt <jan@centricular.com> * sys/xvimage/xvcontext.c: xvimagesink: Zero initialize mask array Clear the stack array before setting bits to pass to XISelectEvents(). Fixes spurious crash from an X error: X Error of failed request: BadValue (integer parameter out of range for operation) Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3100> 2022-10-01 04:47:31 +1000 Jan Schmidt <jan@centricular.com> * sys/xvimage/xvcontext.c: xvimagesink: Don't leak temporary Use a stack variable instead of a temporarily malloced variable that wasn't being freed properly. Fixes a small leak of a GstXvTouchDevice Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3100> 2022-10-01 04:41:06 +1000 Jan Schmidt <jan@centricular.com> * gst/playback/gstdecodebin3.c: decodebin3: Make sure event is writable before modifying Make sure we're operating on a private copy of an event when modifying it. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3107> 2022-10-01 04:40:09 +1000 Jan Schmidt <jan@centricular.com> * gst/playback/gsturisourcebin.c: urisourcebin: Make sure event is writable before modifying. Make sure we're operating on a private copy of an event before modifying it. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3107> 2022-10-01 04:37:05 +1000 Jan Schmidt <jan@centricular.com> * gst/playback/gstdecodebin3.c: decodebin3: Don't lose a ref on EOS event Make sure not to give away the ref on the final EOS event for which the probe handler is returning GST_PAD_PROBE_REMOVE when pushing the event manually. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3107> 2022-09-30 00:10:25 +0100 Tim-Philipp Müller <tim@centricular.com> * gst-libs/gst/pbutils/descriptions.c: * tests/check/libs/pbutils.c: pbutils: descriptions: add meta/x-klv Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3094> 2022-09-30 00:07:07 +0100 Tim-Philipp Müller <tim@centricular.com> * gst-libs/gst/pbutils/descriptions.c: * tests/check/libs/pbutils.c: pbutils: descriptions: fix gst_pb_utils_get_caps_description_flags() And add a little unit test. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3094> 2022-09-29 09:39:15 +0100 James Cowgill <james.cowgill@blaize.com> * gst-libs/gst/tag/gstxmptag.c: xmptag: Call gst_tag_register_musicbrainz_tags during init We need to call this to register the MusixBrainz tags before we use them in an XMP schema. Fixes this critical when attempting to run jpegparse on a JPEG containing MusicBrainz XMP tags: GStreamer-CRITICAL **: 20:41:07.885: gst_tag_get_type: assertion 'info != NULL' failed Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3092> 2022-09-29 14:36:38 +0300 Sebastian Dröge <sebastian@centricular.com> * tests/interactive/test-effect-switch.c: test-effect-switch: Fix some memory leaks and make effect element ownership clearer Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3091> 2018-03-28 17:54:15 +0200 Philipp Zabel <p.zabel@pengutronix.de> * gst-libs/gst/audio/gstaudiodecoder.c: * gst-libs/gst/audio/gstaudioencoder.c: * gst-libs/gst/video/gstvideodecoder.c: * gst-libs/gst/video/gstvideoencoder.c: buffer: drop parent meta in deep copy/foreach_metadata The purpose of a deep buffer copy is to be able to release the source buffer and all its dependencies. Attaching the parent buffer meta to the newly created deep copy needlessly keeps holding a reference to the parent buffer. The issue this solves is the fact you need to allocate more buffers, as you have free buffers being held for no reason. In the good cases it will use more memory, in the bad case it will stall your pipeline (since codecs often need a minimum number of buffers to actually work). Fixes #283 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2928> 2022-09-27 13:41:37 +0200 Edward Hervey <edward@centricular.com> * gst/playback/gstdecodebin3.c: decodebin3: Fix memory issues with active selection list This had a couple of issues: * The backing strings (from GstStream) could disappear * The actual list wasn't properly reset/freed when decodebin3 was re-used Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3083> 2022-09-21 19:19:45 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * meson.build: meson: Use implicit builtin dirs in pkgconfig generation Starting with Meson 0.62, meson automatically populates the variables list in the pkgconfig file if you reference builtin directories in the pkgconfig file (whether via a custom pkgconfig variable or elsewhere). We need this, because ${prefix}/libexec is a hard-coded value which is incorrect on, for example, Debian. Bump requirement to 0.62, and remove version compares that retained support for older Meson versions. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1245 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3061> 2022-09-06 17:25:50 -0400 Thibault Saunier <tsaunier@igalia.com> * docs/plugins/gst_plugins_cache.json: * gst/videorate/gstvideorate.c: * gst/videorate/gstvideorate.h: * tests/validate/meson.build: * tests/validate/videorate/duplicate_on_eos.validatetest: * tests/validate/videorate/duplicate_on_eos/flow-expectations/log-videorate-sink-expected: * tests/validate/videorate/duplicate_on_eos/flow-expectations/log-videorate-src-expected: * tests/validate/videorate/duplicate_on_eos_disbaled.validatetest: * tests/validate/videorate/duplicate_on_eos_disbaled/flow-expectations/log-videorate-sink-expected: * tests/validate/videorate/duplicate_on_eos_disbaled/flow-expectations/log-videorate-src-expected: * tests/validate/videorate/duplicate_on_eos_half_sec.validatetest: * tests/validate/videorate/duplicate_on_eos_half_sec/flow-expectations/log-videorate-sink-expected: * tests/validate/videorate/duplicate_on_eos_half_sec/flow-expectations/log-videorate-src-expected: videorate: Add a `max-closing-segment-duplication-duration` property This allows users to let videorate fully fill the segments when received EOS or on new segment, removing an arbitrary limit of 25 duplicates which might not be what the user wants (for example on low FPS stream in GES, that sometimes leaded to broken behavior) Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3000> 2022-09-12 09:46:43 -0400 Xavier Claessens <xavier.claessens@collabora.com> * tools/meson.build: meson: Set install_tag on some targets Trying to follow recommendation from Meson documentation: https://mesonbuild.com/Installing.html#installation-tags Move tools into 'bin' or 'bin-devel' categories to keep only libs and plugins in the default 'runtime' category. This simplifies distribution of GStreamer application skipping parts that are not needed, similarly to what Cerbero does by hardcoding huge list of files. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3017> 2022-09-19 08:54:15 +0200 Edward Hervey <edward@centricular.com> * gst-libs/gst/video/video-converter.c: video-converter: Fix doc Argument names weren't correct Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3043> 2022-09-09 16:57:18 -0400 Thibault Saunier <tsaunier@igalia.com> * gst/playback/gstdecodebin2.c: decodebin2: Do not fail if one of the decoders isn't able to output the requested format when expose-all=False When trying to find an decoder in that case, we loop over the different decoder factories, and check that it outputs a format that matches the requested one (through the :caps property), but if we find a decoder that do match but later on some other don't we end up failing autopluging. This patch ensures that we still plug the decoder that can work. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3011> 2022-08-29 10:20:55 -0400 Thibault Saunier <tsaunier@igalia.com> * gst-libs/gst/gl/meson.build: gl:meson: Minor typo fix Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2954> 2022-08-29 10:17:45 -0400 Thibault Saunier <tsaunier@igalia.com> * docs/meson.build: doc: Do not build plugins to build the doc It is not actually necessary Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2954> 2022-09-07 10:36:09 -0400 Thibault Saunier <tsaunier@igalia.com> * docs/plugins/gst_plugins_cache.json: * gst-libs/gst/pbutils/gstdiscoverer.c: * gst/playback/gsturidecodebin.c: discoverer: Fix discovering source that expose raw audio/video Exposes a "uridecodebin:post-stream-topology" property as the discoverer needs to have topology information about all streams so we need `uridecodebin` to always plug decodebins for that case. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3009> 2022-09-07 17:11:08 -0400 Thibault Saunier <tsaunier@igalia.com> * gst/playback/gsturidecodebin.c: uridecodebin: Fix some property documentation syntax Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3009> 2022-09-07 10:39:21 -0400 Thibault Saunier <tsaunier@igalia.com> * gst/playback/gsturidecodebin.c: * tests/validate/meson.build: * tests/validate/uridecodebin/expose_raw_pad_caps.validatetest: uridecodebin: Ensure that pads caps are set before exposing them We are supposed to guarantee that pads that are exposed have the caps set, but for sources that have pad with "all raw caps" templates, we end up exposing pads that don't have caps set yet, which can break code (in GES for example). To avoid that we let uridecodebin plug a `decodebin` after such pads and let decodebin to handle that for us. In the end the only thing that decodebin does in those cases is to wait for pads to be ready and expose them, after that `uridecodebin` will expose those pads. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3009> 2021-03-24 14:20:18 -0500 Zebediah Figura <z.figura12@gmail.com> * meson.build: meson: Build with -Wl,-z,nodelete to prevent unloading of dynamic libraries and plugins GLib made the unfortunate decision to prevent libgobject from ever being unloaded, which means that now any library which registers a static type can't ever be unloaded either (and any library that depends on those, ad nauseam). Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/778> 2022-07-06 04:18:37 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/video/video-format.c: video-format: Workaround MSVC build error ../gst-libs/gst/video/video-format.c(6779): error C2219: syntax error: type qualifier must be after '*' Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2719> 2022-09-07 16:35:38 +1000 Matthew Waters <matthew@centricular.com> * gst/subparse/mpl2parse.c: subparse: fix crash when parsing invalid timestamps in mpl2 Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=49245 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2989> 2022-09-01 15:11:31 -0400 Thibault Saunier <tsaunier@igalia.com> * ext/alsa/meson.build: * ext/cdparanoia/meson.build: * ext/gl/meson.build: * ext/libvisual/meson.build: * ext/ogg/meson.build: * ext/opus/meson.build: * ext/pango/meson.build: * ext/theora/meson.build: * ext/vorbis/meson.build: * gst/adder/meson.build: * gst/app/meson.build: * gst/audioconvert/meson.build: * gst/audiomixer/meson.build: * gst/audiorate/meson.build: * gst/audioresample/meson.build: * gst/audiotestsrc/meson.build: * gst/compositor/meson.build: * gst/encoding/meson.build: * gst/gio/meson.build: * gst/overlaycomposition/meson.build: * gst/pbtypes/meson.build: * gst/playback/meson.build: * gst/rawparse/meson.build: * gst/subparse/meson.build: * gst/tcp/meson.build: * gst/typefind/meson.build: * gst/videoconvertscale/meson.build: * gst/videorate/meson.build: * gst/videotestsrc/meson.build: * gst/volume/meson.build: * meson.build: * sys/ximage/meson.build: * sys/xvimage/meson.build: meson: Call pkgconfig.generate in the loop where we declare plugins dependencies Removing some copy pasted code Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2970> 2022-09-01 11:51:48 -0400 Thibault Saunier <tsaunier@igalia.com> * docs/meson.build: * gst-libs/gst/allocators/meson.build: * gst-libs/gst/app/meson.build: * gst-libs/gst/audio/meson.build: * gst-libs/gst/fft/meson.build: * gst-libs/gst/gl/meson.build: * gst-libs/gst/pbutils/meson.build: * gst-libs/gst/riff/meson.build: * gst-libs/gst/rtp/meson.build: * gst-libs/gst/rtsp/meson.build: * gst-libs/gst/sdp/meson.build: * gst-libs/gst/tag/meson.build: * gst-libs/gst/video/meson.build: * meson.build: meson: Namespace the plugins_doc_dep/libraries variables Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2970> 2022-08-31 18:44:14 -0400 Thibault Saunier <tsaunier@igalia.com> * meson.build: meson: Rename plugins list and make them "dependency" objects Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2970> 2022-08-31 14:50:38 +0000 Ádám Balázs <broothy@gmail.com> * gst/audioconvert/gstaudioconvert.c: gstaudioconvert: doc: Fix mix-matrix example mix-matrix should contain float elements, modify the example to do so Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2966> 2022-08-30 14:29:41 +0200 Rafael Caricio <rafael@caricio.com> * gst-libs/gst/pbutils/gstaudiovisualizer.c: audiovisualizer: fix buffer mapping to not increase refcount Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2953> 2022-08-23 19:12:17 +0300 Sebastian Dröge <sebastian@centricular.com> * sys/ximage/ximagesink.c: * sys/xvimage/xvimagesink.c: x(v)imagesink: Don't create invalid GstNavigationModifierType by simply passing through X11 event states Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2931> 2022-07-22 13:41:17 +0200 Mathieu Duponchelle <mathieu@centricular.com> * docs/plugins/gst_plugins_cache.json: * gst/playback/gstrawcaps.h: playback: add onvif metadata caps to raw caps + remove encoding from x-onvif-metadata caps output by qtdemux Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2889> 2022-08-23 16:02:31 +0200 Mathieu Duponchelle <mathieu@centricular.com> * gst/videoconvertscale/gstvideoconvertscale.c: videoconvert: fix passthrough on equivalent transfer When the input info and output info are equal, except for the transfer functions that are *not* equivalent, we need to set up a converter as we won't be passthrough. Fixes an assertion in that case. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2929> 2022-08-17 12:53:02 +0200 Guillaume Desmottes <guillaume.desmottes@onestream.live> * gst-libs/gst/video/video-converter.c: * gst-libs/gst/video/video-converter.h: * tests/check/libs/video.c: base: video-converter: add accessors for input and output formats Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2905> 2022-08-05 20:52:19 +0900 Seungha Yang <seungha@centricular.com> * docs/plugins/gst_plugins_cache.json: * gst/videoconvertscale/gstvideoconvert.c: * gst/videoconvertscale/gstvideoconvertscale.c: * gst/videoconvertscale/gstvideoconvertscale.h: * gst/videoconvertscale/gstvideoscale.c: videoconvert,videoscale: Do conversion in videoconvert and scaling in videoscale Keep behaving the same as before videoconvertscale port Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2778> 2022-08-05 20:16:00 +0900 Seungha Yang <seungha@centricular.com> * docs/plugins/gst_plugins_cache.json: * gst/videoconvertscale/gstvideoconvert.c: * gst/videoconvertscale/gstvideoconvertscale.c: * gst/videoconvertscale/gstvideoconvertscale.h: * gst/videoconvertscale/gstvideoscale.c: * tests/validate/convertscale/convert_disable_scale.validatetest: * tests/validate/convertscale/convert_disable_scale/flow-expectations/log-converter-src-expected: * tests/validate/convertscale/scale_disable_convert.validatetest: * tests/validate/convertscale/scale_disable_convert/flow-expectations/log-scaler-src-expected: * tests/validate/meson.build: Revert "videoconvertscale: Add properties to disable scaling/converting in videoconvert/videoscale" This reverts commit cd7a91cef1c6a2e24d440126b7f2ab543fb205c5. Reverting properties, scaling in videoconvert and converting in videoscale will be disabled by the other commit Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2778> 2022-08-12 22:42:28 -0700 Khem Raj <raj.khem@gmail.com> * gst/subparse/gstssaparse.c: ssaparse: include required system headers for isspace() and sscanf() functions Newer compilers ( clang 15 ) have turned stricter and errors out instead of warning on implicit function declations Fixes gstssaparse.c:297:12: error: call to undeclared library function 'isspace' with type 'int (int)'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] while (isspace(*t)) Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2879> 2022-08-12 13:16:50 +0300 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/rtsp/gstrtspurl.c: * tests/check/libs/rtsp.c: rtspurl: Use gst_uri_join_strings() in gst_rtsp_url_get_request_uri_with_control() instead of a hand-crafted, wrong version For example the query string of the base must not be taken over to the request URL unless there is no control path, and control paths can be absolute and must not be considered relative if they start with a /. Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/971 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2868> 2022-08-12 13:15:46 +0300 Sebastian Dröge <sebastian@centricular.com> * tests/check/libs/rtsp.c: rtspurl: Use fail_unless_equals_string() in tests Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2868> 2022-07-27 22:34:42 +1000 Jan Schmidt <jan@centricular.com> * ext/pango/gstbasetextoverlay.c: * ext/pango/gstbasetextoverlay.h: basetextoverlay: Don't miscalculate text running times When a new segment event arrives, it immediately updates the current stored segment, which was used for calculating the running time of the current text buffer for every passing video frame. This means a segment that arrives after the text buffer might get used to (mis)calculate the running times subsequently. Instead, calculate and store the right running time using the current segment when storing the buffer. Later the stored segment can get freely updated. This fixes the case where pieces of video and text streams are seamlessly concatenated and fed through the text overlay. Previously, it could lead to the current text buffer suddenly have a massive running time and blocking all further input. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2802> 2022-08-09 18:06:41 +0100 Tim-Philipp Müller <tim@centricular.com> * docs/plugins/gst_plugins_cache.json: * ext/opus/gstopusenc.c: opusenc: improve inband-fec property documentation Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2853> 2022-06-30 16:14:27 +0300 Jordan Petridis <jordan@centricular.com> * ext/alsa/gstalsaplugin.c: gstalsaplugin: return the result of the element registration Previously there were branches that would return FALSE, however it looks like we forgot to return the new result variable. https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/900 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2695> 2022-01-22 02:35:36 +0100 Mathieu Duponchelle <mathieu@centricular.com> * gst/encoding/gstsmartencoder.c: smartencoder: fix detection of avc1 While avc1 is the FourCC, avc is the name used in caps Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1549> 2022-01-22 02:29:54 +0100 Mathieu Duponchelle <mathieu@centricular.com> * gst/playback/gstdecodebin2.c: decodebin2: don't reverse stream topology order This can be important for instance when a container holds multiple tracks with the same media type, with no indication (eg tags) of which track is the default one. In that case, players usually pick the first track by default. This is especially useful when using smart editing with GES, as it will result in the same ordering as the input file that was used as a template. For reference, this yields the same order as ffprobe. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1549> 2022-01-21 01:02:52 +0100 Mathieu Duponchelle <mathieu@centricular.com> * gst/encoding/gstsmartencoder.c: gstsmartencoder: don't make calculations for invalid DTS Instead, as the current code relies on having a valid DTS (for lining up passed through and re-encoded segments), simply compute a DTS from the PTS if the DTS was invalid. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1549> 2022-01-21 00:57:16 +0100 Mathieu Duponchelle <mathieu@centricular.com> * gst-libs/gst/pbutils/encoding-profile.c: encoding-profile: don't order profiles by stream ID .. when creating a profile from a discoverer info. There is no justification for the existing code, and talking with Thibault he cannot remember why the sort was in place. On the other hand, this allows GES users to not have to implement a callback for the select-tracks-for-object callback when using it to trim a single clip, which the output profile was built from: track elements will be placed in the appropriate track by default, that is the one that will be connected to the matching profile. For multi-clip timelines, the situation doesn't change, users will still have to implement a callback and do the leg work of placing track elements (if any) in a matching track (if any). Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1549> 2022-01-21 00:49:33 +0100 Mathieu Duponchelle <mathieu@centricular.com> * gst-libs/gst/pbutils/encoding-profile.c: encoding-profile: ignore more output caps fields chroma-format, bit-depth-chroma, bit-depth-luma are all informative fields set by the H265 and H265 parser upon receiving an SPS. They shouldn't be constrained downstream of the parser, instead if a user wants those to ultimately match certain values they should do so by constraining a profile. In this case however, we also always remove the profile constraint in order to let encoders pick a suitable one as a function of the raw input video format and their own capabilities. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1549> 2022-08-01 17:25:56 +0200 Edward Hervey <edward@centricular.com> * gst/playback/gstparsebin.c: parsebin: Avoid crash with unknown streams With the new addition of handling unknown sream types we *could* end up with a chain which doesn't have a current_pad (it's an intermediary one) Fixes #1287 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2822> 2022-05-25 18:40:30 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst-libs/gst/rtsp/gstrtspconnection.c: rtsp+rtmp: Forward warning added to tls-validation-flags to our users With the 2.72 release, glib-networking developers have decided that TLS certificate validation cannot be implemented correctly by them, so they've deprecated it. In a nutshell: a cert can have several validation errors, but there are no guarantees that the TLS backend will return all those errors, and things are made even more complicated by the fact that the list of errors might refer to certs that are added for backwards-compat and won't actually be used by the TLS library. Our best option is to ignore the deprecation and pass the warning onto users so they can make an appropriate security decision regarding this. We can't deprecate the tls-validation-flags property because it is very useful when connecting to RTSP cameras that will never get updates to fix certificate errors. Relevant upstream merge requests / issues: https://gitlab.gnome.org/GNOME/glib/-/merge_requests/2214 https://gitlab.gnome.org/GNOME/glib-networking/-/issues/179 https://gitlab.gnome.org/GNOME/glib-networking/-/merge_requests/193 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2494> 2022-07-13 22:37:26 +0900 Seungha Yang <seungha@centricular.com> * docs/plugins/gst_plugins_cache.json: compositor: Update plugins cache Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1486> 2022-01-18 21:21:23 +0900 Seungha Yang <seungha@centricular.com> * gst/compositor/compositor.c: compositor: Warn when inputs are SDR/HDR mixed Let user know that the result of mixed SDR/HDR is not guaranteed to be a good visual quality. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1486> 2021-11-24 20:21:52 +0900 Seungha Yang <seungha@centricular.com> * gst/compositor/blend.c: * gst/compositor/blend.h: * gst/compositor/compositor.c: * gst/compositor/compositor.h: compositor: Add support for all formats For formats which we don't have fast-path implementation, compositor will convert it to common unpack formats (AYUV, ARGB, AYUV64 and ARGB64) then blending will happen using the intermediate formats. Finally blended image will be converted back to the selected output format if required. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1486> 2021-11-20 00:41:52 +0900 Seungha Yang <seungha@centricular.com> * gst/compositor/blend.c: * gst/compositor/blend.h: * gst/compositor/compositor.c: compositor: Add support for Y444 high bitdepth formats Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1486> 2021-11-19 16:32:38 +0900 Seungha Yang <seungha@centricular.com> * gst/compositor/blend.c: * gst/compositor/blend.h: * gst/compositor/compositor.c: * gst/compositor/compositororc-dist.c: * gst/compositor/compositororc-dist.h: * gst/compositor/compositororc.orc: compositor: Add support for I420/I422 high bitdepth formats Implementation for {I420,I422}_{10,12}_{LE,BE} formats Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1486> 2021-11-19 21:46:43 +0900 Seungha Yang <seungha@centricular.com> * gst/compositor/blend.c: * gst/compositor/compositor.c: * gst/compositor/compositor.h: compositor: Calculate background color only once ... instead of do that per fill_color() call in case of RGB format. Moreover, respect selected GstVideoColorRange Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1486> 2022-07-27 15:42:44 +1000 Matthew Waters <matthew@centricular.com> * gst-libs/gst/rtsp/gstrtspconnection.c: rtspconnection: protect cancellable by a mutex It is entirely possible for the cancellable to be cancelled (and freed) in gst_rtsp_connection_flush() while there may be an ongoing read/write operation. Nothing prevents gst_rtsp_connection_flush() from waiting for the outstanding read/writes. This could lead to a crash like (where cancellable has been freed within gst_rtsp_connection_flush()): #0 0x00007ffff4351096 in g_output_stream_writev (stream=stream@entry=0x7fff30002950, vectors=vectors@entry=0x7ffe2c6afa80, n_vectors=n_vectors@entry=3, bytes_written=bytes_written@entry=0x7ffe2c6af950, cancellable=cancellable@entry=0x7fff300288a0, error=error@entry=0x7ffe2c6af958) at ../subprojects/glib/gio/goutputstream.c:377 #1 0x00007ffff44b2c38 in writev_bytes (stream=0x7fff30002950, vectors=vectors@entry=0x7ffe2c6afa80, n_vectors=n_vectors@entry=3, bytes_written=bytes_written@entry=0x7ffe2c6afb90, block=block@entry=1, cancellable=0x7fff300288a0) at ../subprojects/gst-plugins-base/gst-libs/gst/rtsp/gstrtspconnection.c:1320 #2 0x00007ffff44b583e in gst_rtsp_connection_send_messages_usec (conn=0x7fff30001370, messages=messages@entry=0x7ffe2c6afcc0, n_messages=n_messages@entry=1, timeout=timeout@entry=3000000) at ../subprojects/gst-plugins-base/gst-libs/gst/rtsp/gstrtspconnection.c:2056 #3 0x00007ffff44d2669 in gst_rtsp_client_sink_connection_send_messages (sink=0x7fffac0192c0, timeout=3000000, n_messages=1, messages=0x7ffe2c6afcc0, conninfo=0x7fffac019610) at ../subprojects/gst-rtsp-server/gst/rtsp-sink/gstrtspclientsink.c:1929 #4 gst_rtsp_client_sink_try_send (sink=sink@entry=0x7fffac0192c0, conninfo=conninfo@entry=0x7fffac019610, requests=requests@entry=0x7ffe2c6afcc0, n_requests=n_requests@entry=1, response=response@entry=0x0, code=code@entry=0x0) at ../subprojects/gst-rtsp-server/gst/rtsp-sink/gstrtspclientsink.c:2845 #5 0x00007ffff44d3077 in do_send_data (buffer=0x7fff38075c60, channel=<optimized out>, context=0x7fffac042640) at ../subprojects/gst-rtsp-server/gst/rtsp-sink/gstrtspclientsink.c:3896 #6 0x00007ffff4281cc6 in gst_rtsp_stream_transport_send_rtp (trans=trans@entry=0x7fff20061f80, buffer=<optimized out>) at ../subprojects/gst-rtsp-server/gst/rtsp-server/rtsp-stream-transport.c:632 #7 0x00007ffff4278e9b in push_data (stream=0x7fff40019bf0, is_rtp=<optimized out>, buffer_list=0x0, buffer=<optimized out>, trans=0x7fff20061f80) at ../subprojects/gst-rtsp-server/gst/rtsp-server/rtsp-stream.c:2586 #8 check_transport_backlog (stream=0x7fff40019bf0, trans=0x7fff20061f80) at ../subprojects/gst-rtsp-server/gst/rtsp-server/rtsp-stream.c:2645 #9 0x00007ffff42793b3 in send_tcp_message (idx=<optimized out>, stream=0x7fff40019bf0) at ../subprojects/gst-rtsp-server/gst/rtsp-server/rtsp-stream.c:2741 #10 send_func (stream=0x7fff40019bf0) at ../subprojects/gst-rtsp-server/gst/rtsp-server/rtsp-stream.c:2776 #11 0x00007ffff7d59fad in g_thread_proxy (data=0x7fffbc062920) at ../subprojects/glib/glib/gthread.c:827 #12 0x00007ffff7a8ce2d in start_thread () from /lib64/libc.so.6 #13 0x00007ffff7b12620 in clone3 () from /lib64/libc.so.6 Fix by adding a cancellable lock and returning an extra reference used across all read/write operations. gst_rtsp_connection_flush() can free the in-use cancellable and it will no longer affect any in progress read/write. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2799> 2022-07-22 13:13:42 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/audiomixer/gstaudiointerleave.c: audiointerleave: fix property docs Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2785> 2022-07-23 02:49:20 +1000 Jan Schmidt <jan@centricular.com> * gst-libs/gst/video/video-chroma.c: video: Fix scaling in 4x horizontal co-sited chroma 4x downscaling of chroma with co-sited chroma has never worked it seems. Fixes incorrect videotestsrc output and videoconvert conversions to Y41B, YUV9, YVU9 and IYU9 with co-sited chroma. e.g. gst-launch-1.0 videotestsrc ! video/x-raw,format=Y41B,width=1280,height=720 ! \ videoconvert ! autovideosink Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2789> 2022-07-02 06:08:57 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/video/gstvideoaggregator.c: videoaggregator: Don't force upstream alpha format "video/x-raw,format=RGBA ! some-video-filter ! video/x-raw,format=NV12" is a very common case and therefore such erroring at baseclass does not seem to be a desired behavior. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2703> 2022-07-17 00:30:10 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/video/video-converter.c: video-converter: Use primaries compare function Avoid conversion if both color primaries are functionally equal Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2765> 2022-07-16 23:36:22 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/video/video-color.c: * gst-libs/gst/video/video-color.h: * tests/check/libs/video.c: video-color: Add primaries and colorimetry compare functions SMPTE 170M and 240M use the same RGB and white point coordinates and therefore both primaries can be considered functionally equivalent. Also, some transfer functions have different name but equal gamma functions. Adding another colorimetry compare function to deal with thoes cases at once Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2765> 2022-07-12 14:47:20 +1000 Matthew Waters <matthew@centricular.com> * ext/gl/gstglimagesink.c: glimagesink: only allow setting the GL display/context if it is a valid value Otherwise, when setting the external application context, then the display may be cleared and then not used and the asharing mechanism does not work anymore. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2750> 2022-07-07 23:40:22 +1000 Jan Schmidt <jan@centricular.com> * gst-libs/gst/gl/gstglupload.c: glupload: Add raw caps to sink pad when needed. When checking if the current upload method can support the requested caps filter in _transform_caps(), make sure the sink pad reports raw caps. Fixes #1311 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2725> 2022-07-07 23:54:44 +1000 Jan Schmidt <jan@centricular.com> * gst-libs/gst/gl/gstglupload.c: gstglupload: Remove raw caps from individual methods Raw memory upload should always be the least preferred input caps, only added by the raw memory uploader as the last thing in the caps. Caps negotiation should still choose raw data when it needs to, and other upload methods that can accept raw data buffers will still do so. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2725> 2022-07-11 20:12:30 +0200 Mathieu Duponchelle <mathieu@centricular.com> * gst-libs/gst/video/gstvideoaggregator.c: videoaggregator: always convert when user provides converter-config The `converter-config` property may be used to perform cropping, conversion should always be performed when the user set the property to a non-NULL value. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2746> 2022-07-08 20:49:21 +0200 Andoni Morales Alastruey <ylatuya@gmail.com> * gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m: glwindow_cocoa: fix a leak of the GstNSView This leak is also causing a leak of the GstGLCAOpenGLLayer which leaks the GstGLWrappedContext and the GstGLDisplay Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2736> 2022-07-08 20:38:51 +0200 Andoni Morales Alastruey <ylatuya@gmail.com> * gst-libs/gst/gl/cocoa/gstglcontext_cocoa.m: gl: Fix leak of the whole CGL context This was leaking the CGL context and several resources allocated in the context, around 70MB for a 1080p clip Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2736> 2022-06-14 12:22:22 +0200 Marc Leeman <m.leeman@televic.com> * gst-libs/gst/video/video-format.c: base: lookup RGB format without alpha librfb requests a colour space for depth 32 and bpp 32 with alpha set to 0x0, treat this the same as depth 24 with bpp 32. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2627> 2022-07-04 17:27:50 +1000 Matthew Waters <matthew@centricular.com> * gst/videoconvertscale/gstvideoconvertscale.c: videoconvertscale: ensure writable caps when fixating format gst_video_convert_scale_get_fixed_format() receives 'othercaps' from basetransforms' fixate_caps() vmethod which explicitly mentions that '`othercaps` may not be writable'. The gst_caps_intersect() call just before may or may not produce new caps. Particularly in cases like EMPTY or ANY caps on either of the inputs, only a ref is taken and returned to the caller. As a result, gst_video_convert_scale_fixate_format() may have attempted to modify a non-writable caps structure. Fix by adding a gst_caps_make_writable(). Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2709> 2022-06-30 00:39:50 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/subparse/samiparse.c: samiparse: clean up some GString usage There's no need to re-assign the return value of g_string_append_*() functions and such to the variable holding the GString. These return values are just for convenience so function calls can be chained. The actual GString pointer won't change, it's not a GList after all. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2685> 2022-06-30 00:31:24 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/subparse/samiparse.c: samiparse: micro-optimise entity handling Avoid relocations and hard-code entity string length in the struct, since we basically get it for free here. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2685> 2022-06-30 00:13:19 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/subparse/samiparse.c: * tests/check/elements/subparse.c: samiparse: fix handling of self-closing tags We would check the wrong string (rest of line rather than element) for the / suffix of self-closing tags, which is not only wrong but also has atrocious performance with certain strings like the garbled nonsense clusterfuzz feeds us, which might cause discoverer to time out when processing garbled SAMI files. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=47461 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2685> 2022-07-01 23:57:08 +1000 Jan Schmidt <jan@centricular.com> * gst-libs/gst/gl/gstglupload.c: Revert "glupload: Fix caps query with no filter" This reverts commit 6f9ae5d7580763b5d18badb76f2166ff0012886a. The _transform_caps() function can't tell the difference between the caller wanting to know the output caps for the current method, or all possible output caps. If it includes caps for all possible methods, glupload can end up negotiating and sending the wrong output caps downstream. Partially reverts !2687 Fixes #1310 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2699> 2022-06-28 09:38:34 +0300 Sebastian Dröge <sebastian@centricular.com> * ext/gl/gstglvideomixer.c: glvideomixer: Only consider property changes a geometry change if there as an actual change Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2669> 2022-06-27 21:28:07 +0300 Sebastian Dröge <sebastian@centricular.com> * docs/plugins/gst_plugins_cache.json: * ext/gl/gstglvideomixer.c: glvideomixer: Add crop-{left,right,top,bottom} pad properties for cropping inputs Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2669> 2022-06-30 09:02:00 +0300 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/sdp/gstsdpmessage.c: sdpmessage: Don't set SDP medias from caps without media/payload/clock-rate fields Previously it would've silently failed reading the payload/clock-rate and instead would've used some random value that happened to be on the stack. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2689> 2022-06-30 12:50:17 +1000 Jan Schmidt <jan@centricular.com> * gst-libs/gst/gl/gstglupload.c: glupload: Fix caps query with no filter If no filter caps are provided with a caps query, always generate a full set of all caps from all upload methods, not just the configured one. This is needed to handle renegotiation when dealing with raw sysmem caps - as the upload method might accept raw sysmem caps, but only the raw data uploader adds those to the caps query. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2687> 2022-06-30 12:46:31 +1000 Jan Schmidt <jan@centricular.com> * gst-libs/gst/gl/gstglupload.c: Revert "glupload: allow system memory for dmabuf in transform_caps" This reverts commit f3292dc1561a8d62812c3f1a2bb3de5c5bb6a807. Only the raw data uploader should add sysmem caps to the actual caps query, because we want them to be at the lowest priority. If upstream does select to send raw caps, then the correct upload method will still be chosen because the accept_caps implementation will accept them Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2687> 2022-06-30 18:41:01 +1000 Jan Schmidt <jan@centricular.com> * gst-libs/gst/gl/gstglupload.c: gl: Don't use the full transform_caps() method for reconfiguration check When checking if we need to reconfigure when uploading, check specifically the output caps of the current method will result in compatible/incompatible caps, not the full set of output caps from all upload methods. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2687> 2022-06-30 08:42:43 +0300 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/video/video.h: video: Include new video-sei.h in video.h Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2688> 2022-06-29 10:55:13 +0100 Tim-Philipp Müller <tim@centricular.com> * meson.build: coding style: allow declarations after statement See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1243/ and https://gitlab.freedesktop.org/gstreamer/gstreamer-project/-/issues/78 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2683> 2022-06-16 10:19:17 +0000 James Hilliard <james.hilliard1@gmail.com> * tests/validate/videorate/change_rate_reverse_playback.validatetest: * tests/validate/videorate/change_rate_while_playing.validatetest: videorate: remove property-value quotes Fixes warnings like: Received a structure string that contains '="0.5"'. Reading as a gdouble value, rather than a string value. This is undesired behaviour, and with GStreamer 1.22 onward, this will be interpreted as a string value instead because it is wrapped in '"' quotes. If you want to guarantee this value is read as a string, before this change, use '=(string)"0.5"' instead. If you want to read in a gdouble value, leave its value unquoted. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2621> 2022-06-25 19:50:10 +0100 Tim-Philipp Müller <tim@centricular.com> * tests/check/meson.build: tests: skip unit tests for dependency-less elements that have been disabled Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1136 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2660> 2022-05-13 12:57:06 -0400 Xavier Claessens <xavier.claessens@collabora.com> * gst-libs/gst/video/video-frame.c: * gst-libs/gst/video/video-frame.h: * tests/check/libs/video.c: GstVideoFrame: Add g_auto() support Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2412> 2022-06-08 19:18:48 +0300 Vivia Nikolaidou <vivia@ahiru.eu> * gst-libs/gst/video/video.c: * gst-libs/gst/video/video.h: avviddec, video.c, h265parse: Workaround for broken field-based interlaced encoders Some encoders (e.g. Makito) have H265 field-based interlacing, but then also specify an 1:2 pixel aspect ratio. That makes it kind-of work with decoders that don't properly support field-based decoding, but makes us end up with the wrong aspect ratio if we implement everything properly. As a workaround, detect 1:2 pixel aspect ratio for field-based interlacing, and check if making that 1:1 would make the new display aspect ratio common. In that case, we override it with 1:1. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2577> 2022-06-12 05:35:27 -0600 James Hilliard <james.hilliard1@gmail.com> * gst/playback/gstdecodebin3-parse.c: * gst/playback/gstdecodebin3.c: decodebin3: fix EOS event sequence See docs: https://gstreamer.freedesktop.org/documentation/additional/design/seqnums.html?gi-language=c#seqnums-sequence-numbers Per docs: When a sink element receives an EOS event and creates a new EOS message to post, it should copy the seqnum from the event to the message because the EOS message is a consequence of the EOS event being received. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2588> 2022-04-06 12:56:30 +0100 Tim-Philipp Müller <tim@centricular.com> * gst-libs/gst/rtsp/gstrtspconnection.c: * gst-libs/gst/video/gstvideodecoder.c: * gst-libs/gst/video/gstvideoencoder.c: * meson.build: * tests/check/elements/audioresample.c: Bump GLib requirement to >= 2.62 Can't require 2.64 yet because of https://gitlab.freedesktop.org/gstreamer/cerbero/-/issues/323 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2568> 2022-05-16 19:29:10 +0200 Andoni Morales Alastruey <ylatuya@gmail.com> * gst-libs/gst/video/meson.build: video: add new video-sei.h header to the list of video_headers Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1458> 2022-02-27 18:41:12 +0000 Andoni Morales Alastruey <ylatuya@gmail.com> * gst-libs/gst/video/video-sei.c: * gst-libs/gst/video/video-sei.h: Fix documentation Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1458> 2022-02-17 15:55:19 +1100 Brad Hards <bradh@frogmouth.net> * gst-libs/gst/video/video-sei.c: * gst-libs/gst/video/video-sei.h: h264parse: add unit test for Precision Time Stamp in SEI messages Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1458> 2022-02-17 15:55:19 +1100 Brad Hards <bradh@frogmouth.net> * gst-libs/gst/video/video-sei.c: h264parse: fix copying of data and UUID Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1458> 2021-12-19 19:14:05 +0100 Andoni Morales Alastruey <ylatuya@gmail.com> * gst-libs/gst/video/meson.build: * gst-libs/gst/video/video-sei.c: * gst-libs/gst/video/video-sei.h: h264parse: add support Precision Time Stamp in SEI messages Expose User Data Unregistered as a new Meta and add API to parse Precision Time Stamp (ST 0604). Fixes #927 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1458> 2022-05-27 14:18:30 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst-libs/gst/video/video-info.c: video: Fix NV12_16L32 size calculation The subsampling of the second plane was not taken into account, resulting in a 16bit per pixel buffers instead of 12. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2512> 2022-05-25 02:10:30 +0900 Seungha Yang <seungha@centricular.com> * gst/playback/gstplaybin3.c: playbin3: Configure combiner on pad-added if needed When collection is updated, decodebin3 exposes pad first and then streams-selected message is posted. The condition can cause a situation where playbin3 links non-existing combiner/playsink pads (since streams-selected is not posted yet) with new decodebin output pad. This commit will re-check selected/active streams condition on pad-added and reconfigure output if needed. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2482> 2022-05-23 21:24:40 -0400 Eli Schwartz <eschwartz@archlinux.org> * gst-libs/gst/tag/meson.build: meson: use better zlib dependency fallback zlib is required, and if it isn't found it is checked several ways and then forced via subproject(). This code was added in commit b93e37592a3ccc0eaece1c8fef2d362b1e5fe685, to account for systems where zlib doesn't have pkg-config files installed. But Meson already does dependency fallback, and also, since 0.54.0, does the in-between checks for find_library('z') and has_header('zlib.h') via the "system" type dependency. Simplify dependency lookup by marking it as required, which also makes sure that the console log doesn't confusingly list "not found". Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2484> 2022-05-19 12:17:59 +0300 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/pbutils/descriptions.c: * gst-libs/gst/pbutils/descriptions.h: pbutils: Add GST_PBUTILS_CAPS_DESCRIPTION_FLAG_METADATA and ONVIF XML Timed MetaData Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2453> 2022-05-15 16:53:12 +0000 Thibault Saunier <tsaunier@igalia.com> * gst-libs/gst/rtp/gstrtcpbuffer.c: * gst-libs/gst/rtp/gstrtcpbuffer.h: * tests/check/libs/rtp.c: rtcpbuffer: Allow padding on first reduced size packets It is valid to have the padding set to 1 on the first packet and it happens very often from TWCC packets coming from libwebrtc. This means that we were totally ignoring many TWCC packets. Fix test that checked that a first packet with padding was not valid and instead test a single twcc packet with padding to check precisely what this patch was about. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2422> 2022-05-13 13:31:55 +0200 Alicia Boya García <aboya@igalia.com> * gst-libs/gst/app/gstappsink.c: * tests/check/elements/appsink.c: appsink: Fix race condition on caps handling Background: Whenever a caps event is received by appsink, the caps are stored in the same internal queue as buffers. Only when enough buffers have been popped from the queue to reach the caps, `priv->sample` gets its caps updated to match, so that they are correct for the following buffers. Note that as far as upstream elements are concerned, the caps of appsink are updated immediately when the CAPS event is sent. Samples pulled from appsink retain the old caps until a later buffer -- one that was sent by upstream elements after the new caps -- is pulled. The race condition: When a flush is received, appsink clears the entire internal queue. The caps of `priv->sample` are not updated as part of this process, and instead remain as those of the sample that was last pulled by the user. This leaves open a race condition where: 1. Upstream sends a new caps event, and possibly some buffers for the new caps. 2. Upstream sends a flush (possibly from a different thread). 3. Upstream sends a new buffer for the new caps. Since as far as upstream is concerned, appsink caps are the new caps already, no new CAPS event is sent. 4. The appsink user pulls a sample, having not pulled before enough samples to reach the buffers sent in step 1. Bug: the pulled sample has the old caps instead of the new caps. Fixing the race condition: To avoid this problem, when a buffer is received after a flush, `priv->sample`'s caps should be updated with the current caps before the buffer is added to the internal queue. Interestingly, before this patch, appsink already had code for this, in gst_app_sink_render_common(): /* queue holding caps event might have been FLUSHed, * but caps state still present in pad caps */ if (G_UNLIKELY (!priv->last_caps && gst_pad_has_current_caps (GST_BASE_SINK_PAD (psink)))) { priv->last_caps = gst_pad_get_current_caps (GST_BASE_SINK_PAD (psink)); gst_sample_set_caps (priv->sample, priv->last_caps); GST_DEBUG_OBJECT (appsink, "activating pad caps %" GST_PTR_FORMAT, priv->last_caps); } This code assumes `priv->last_caps` is reset when a flush is received, which makes sense, but unfortunately, there was no code in the flush code path resetting it. This patch adds such code, therefore fixing the race condition. A unit test demonstrating the bug and testing its behavior with the fix has also been added. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2413> 2022-05-16 12:34:36 -0400 U. Artie Eoff <ullysses.a.eoff@intel.com> * gst-libs/gst/video/gstvideoaggregator.c: videoaggregator: unref temporary caps The "possible_caps" needs unref after finished using to avoid memory leak. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2430> 2022-05-05 02:54:37 +0900 Seungha Yang <seungha@centricular.com> * tools/gst-play.c: tools: gst-play: Print position even if duration is unknown Gives better visual feedback regarding position information although duration is unknown, live streams for example. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2365> 2022-05-09 16:21:55 +1000 Matthew Waters <matthew@centricular.com> * gst-libs/gst/gl/gstglcontext.c: * gst-libs/gst/gl/gstglcontext_private.h: * gst-libs/gst/gl/gstglcontextquirks.c: * gst-libs/gst/gl/meson.build: gl/context: disable timer queries for ARM Mali-G52 Performing a timer query with a default framebuffer that is incomplete (from using a surfaceless context) will produce GL errors. Disable the timer query on this platform to avoid the errors. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2396> 2022-05-07 04:43:49 +0900 Seungha Yang <seungha@centricular.com> * tools/gst-device-monitor.c: tools: device-monitor: Print string property as-is without serialize gst_value_serialize() does more than what's needed to printf-ing especially when given GValue is already string. Just print string value as-is without gst_value_serialize() to avoid unreadable string print, especially for multi-bytes character encoding cases. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2387> 2022-05-06 09:10:09 +0200 Edward Hervey <edward@centricular.com> * gst/playback/gstplaybin3.c: * gst/playback/gstplaysink.c: * gst/playback/gstplaysink.h: playbin3: Cleanup and refactor combiner sourcecombine * Remove fields no longer used, or that can be replaced by smaller code * Rename "channels" to a more meaningful "input pads" * Directly handle/use combiner pads in the combiners instead of on the playbin3 main structure Remove the corresponding combiner sinkpad whenever a uridecodebin3 source pad goes away * If used, store the corresponding combiner sink pad in the SourcePad helper structure Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2384> 2022-05-03 16:25:19 +0200 Edward Hervey <edward@centricular.com> * gst/playback/gstparsebin.c: parsebin: Don't modify inexistant GstStream When handling exposing un-handled streams, we can only replace the GstStream for those we are creating ourselves (i.e. the fallback collection). Fixes assertions when the demuxer creates those streams Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2353> 2022-05-03 16:08:39 +0200 Edward Hervey <edward@centricular.com> * gst/playback/gstdecodebin3.c: playbin3: Don't use unknown types for default selection When creating a fallback default selection from a collection, don't attempt to use unknown stream types Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2353> 2022-05-03 13:37:31 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/audioconvert/gstaudioconvert.c: audioconvert: If no channel-mask can be fixated then use a NONE channel layout Otherwise this is generating caps without a channel-mask, which is invalid for >1 channels and will always fail negotiation. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2350> 2022-05-02 14:36:03 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * docs/plugins/gst_plugins_cache.json: doc: Update cache for NV12_4L4 and NV12_16LE32 gl support Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2190> 2022-04-14 15:02:11 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst-libs/gst/gl/egl/gsteglimage.c: * gst-libs/gst/gl/gstglcolorconvert.c: * gst-libs/gst/gl/gstglcolorconvert.h: * gst-libs/gst/gl/gstglformat.c: * gst-libs/gst/gl/gstglmemory.h: opengl: Add NV12_4L4 conversion support This format is produced notably by Hantro G1/G2 HW. Using a shader instead of the Hantro embedded converter helps reduce drastrictly the memory usage at a relatively small GPU overhead. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2190> 2022-04-12 14:18:59 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst-libs/gst/gl/egl/gsteglimage.c: * gst-libs/gst/gl/gstglcolorconvert.c: * gst-libs/gst/gl/gstglcolorconvert.h: * gst-libs/gst/gl/gstglformat.c: * gst-libs/gst/gl/gstglmemory.h: opengl: Add NV12_16L32S conversion support This adds a first detiling shader with initial support for NV12_16L32S as produced by Mediatek decoders. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2190> 2022-04-13 14:54:40 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst-libs/gst/gl/gstglsl.c: glsl: Enable GLSL 1.30 if we have OpenGL 3.0/3.1 As implemented, we only support OpenGL 3 API from version 3.2. Though, there is no issue enabling GLSL 1.30 even if we are going to restrict our API usage to 2. This allows using texelFetch() on OpenGL 3.0 and 3.1 drivers. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2190> 2022-04-12 12:24:03 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst-libs/gst/gl/egl/gsteglimage.c: * gst-libs/gst/gl/gstglmemory.c: * gst-libs/gst/gl/gstglutils.c: opengl: Add low level support for tiled formats This adds support for tiled format in stride and plane size code. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2190> 2022-04-12 12:16:23 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst-libs/gst/video/video-frame.c: video: Port video frame to the new tile size helper This is now moved to the library, so it can be used in multiple places. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2190> 2022-04-12 12:14:03 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst-libs/gst/video/video-format.c: * gst-libs/gst/video/video-format.h: video: Add a helper to get the tile size information Since the addition of tiling format with subsampled tile size (NV12_16L32S), getting the tile width/height shifts and tile size have become more complex. Add a helper to extract and scale this information for the selected plane and format. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2190> 2022-04-12 12:18:06 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst-libs/gst/gl/egl/gsteglimage.c: eglimage: Add missing NV21/61 support Caps would allow that, but selecting this format would lead to an "no reached" assertion in the code. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2190> 2022-04-27 10:18:39 +0100 Philippe Normand <philn@igalia.com> * gst-libs/gst/video/gstvideodecoder.c: videodecoder: release stream lock after handling gap events The stream lock is taken before handling gap events but was not released in all possible runtime situations. This issue was introduced in: https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1274 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2307> 2022-04-28 15:32:27 +1000 Matthew Waters <matthew@centricular.com> * gst/subparse/samiparse.c: subparse: don't deref a potentially NULL variable If the html SAMI data is malformed, then retrieving the attribute name may fail. We then cannot retrieve the attribute value. Fixes: https://oss-fuzz.com/testcase-detail/4700130671984640 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2317> 2022-04-27 09:22:40 +0200 Edward Hervey <edward@centricular.com> * gst/playback/gstparsebin.c: * tools/gst-play.c: parsebin: Expose streams of unknown type This actually respects the existing `expose-all-streams` property by exposing them and having them present in the stream collection (as streams of type unknown). Fixes #1179 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2309> 2022-04-27 08:23:59 +0200 Edward Hervey <edward@centricular.com> * gst/playback/gstplaybin2.c: playbin2: Remove dead code blacklisted_mimes has been empty for ages. Remove the code "using" it. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2306> 2022-04-21 02:04:57 +0200 Mathieu Duponchelle <mathieu@centricular.com> * docs/plugins/gst_plugins_cache.json: * ext/pango/gsttimeoverlay.c: * ext/pango/gsttimeoverlay.h: timeoverlay: add support for reference timestamp time mode + update date-time mode to actually use the timestamp that was selected with the time-mode property Co-authored-by: Sebastian Dröge <sebastian@centricular.com> Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2252> 2022-04-27 02:08:00 +0200 Mathieu Duponchelle <mathieu@centricular.com> * gst-libs/gst/rtp/gstrtpbasepayload.c: rtpbasepayload: always store input buffer meta before negotiation The decision to store the input buffer depends on whether extensions are to be added to the output buffer, I assume as an optimization. This creates an issue for subclasses that call negotiate(), where header_exts is actually populated, from their handle_buffer() implementation: at chain time, no header extension has been negotiated yet, which means that we don't add extensions to the first batch of buffers that comes out. Keep track of whether negotiate has been called (this is different from the negotiated field) and always store the input buffer until then. This fixes the issue while largely preserving the optimization. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2304> 2022-04-24 23:19:00 +0800 He Junyan <junyan.he@intel.com> * gst/videoconvertscale/gstvideoconvertscale.c: videoscale: Fix the src video info error in transfer_colorimetry_from_input() Pipeline such as: gst-launch-1.0 -vf videotestsrc ! video/x-raw,format=NV12,colorimetry=\(string\)bt709 \ ! videoscale ! video/x-raw,format=I420 ! fakesink Always trigger a error: ERROR video-info video-info.c:556:gst_video_info_from_caps: no width property given Because it is called before the fixate_size(), the src caps' resolution may be absent or not fixed. That causes that the src video info can not be created correctly and we can not inherit the colorimetry and chroma-site from the input caps. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2289> 2022-04-26 10:58:08 +0200 Guillaume Desmottes <guillaume.desmottes@onestream.live> * gst/videorate/gstvideorate.c: videorate: fix assertion when pushing last and only buffer without duration Fixing this pipeline: gst-launch-1.0 filesrc location=sample.png ! pngdec ! videorate ! fakesink - videorate receives a single buffer with pts = 0, duration = invalid; - then it receives eos triggering this buffer to be pushed downstream; - the pushing code was assuming that a duration was set, which is impossible as we received a single buffer and no output framerate was set either. So the best we can do is to push the buffer without duration. Fix #1177 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2296> 2022-04-26 09:29:39 +0200 Edward Hervey <edward@centricular.com> * ext/ogg/gstoggstream.c: oggdemux: Protect against invalid framerates This check wasn't done for all mappings. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2295> 2022-03-07 08:46:57 -0500 Xavier Claessens <xavier.claessens@collabora.com> * gst-libs/gst/gl/meson.build: Meson: Fix deprecation warnings Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1876> 2022-04-21 11:41:43 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/videorate/gstvideorate.c: Revert "videorate: Update the base time on segment updates" This reverts commit 75b4809ebc23814009bebc70c775ab44d85decf2. See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2186 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2254> 2022-04-21 11:41:36 +0300 Sebastian Dröge <sebastian@centricular.com> * tests/check/elements/videorate.c: Revert "videorate: Add test for segment update" This reverts commit a76f38b2c7ddbed546bb058c32ebcf8a553c003f. See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2186 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2254> 2022-04-21 11:41:25 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/videorate/gstvideorate.c: * tests/check/elements/videorate.c: Revert "videorate: Only "close" the segment if it is discontinous" This reverts commit 6f7922b4dbba5ed780e7b0988669a81848a9e333. See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2186 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2254> 2022-04-21 11:41:15 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/videorate/gstvideorate.c: Revert "videorate: Drop incoming buffers that are outside of the segment" This reverts commit 24fd80344dbc059b72e13d813ca82f414a9d6cce. See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2186 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2254> 2022-04-21 11:40:47 +0300 Sebastian Dröge <sebastian@centricular.com> * tests/check/elements/videorate.c: Revert "videorate: Add unit test for closing a segment and opening a separate one" This reverts commit 98f2a84a289ed4d4cfac9bc5c73182a56eefa99c. See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2186 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2254> 2020-11-26 18:18:52 +0100 Mathieu Duponchelle <mathieu@centricular.com> * gst-libs/gst/video/gstvideoaggregator.c: videoaggregator: keep old buffer when processing a MISSING_DATA gap GAP events flagged with MISSING_DATA are transformed into GAP buffers flagged with CORRUPTED. In these cases, it is preferable to simply keep rendering the previous buffer (if there was one) instead of flashing the pad in and out of view. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/708> 2020-11-26 18:16:10 +0100 Mathieu Duponchelle <mathieu@centricular.com> * gst/compositor/compositor.c: compositor: fix prepare_frame obscuring check A pad without a buffer or with a GAP buffer cannot obscure a pad below it. Ignore those when considering whether a pad should be drawn. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/708> 2020-11-26 15:57:10 +0100 Mathieu Duponchelle <mathieu@centricular.com> * gst/compositor/compositor.c: compositor: a pad without a frame can't obscure the background Skip those when considering whether the background should be drawn Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/708> 2022-04-20 16:25:49 -0500 Olivier Crête <olivier.crete@collabora.com> * tests/check/elements/videoscale.c: videoscale: Add test to ensure that non-scaled metas are kept Just make sure that we're not breaking non-scaled metas Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1630> 2022-02-02 15:28:15 +0000 James Cowgill <james.cowgill@blaize.com> * tests/check/elements/videoscale.c: videoscale: Add test for transform_meta function Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1630> 2022-02-02 15:28:21 +0000 James Cowgill <james.cowgill@blaize.com> * gst/videoconvertscale/gstvideoconvertscale.c: videoscale: Don't copy scaled metas Returning TRUE from the `transform_meta` function tells GstBaseTransform to copy the meta into the new buffer. If videoscale has already transformed a meta by scaling it, it should always return FALSE to avoid duplicating the meta. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1630> 2022-04-01 15:16:20 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * sys/ximage/ximagesink.c: * sys/xvimage/xvimagesink.c: x11: Fix unused variable warnings These are emitted when XInput 2 is not available. ``` ../subprojects/gst-plugins-base/sys/ximage/ximagesink.c: In function ‘gst_x_image_sink_handle_xevents’: ../subprojects/gst-plugins-base/sys/ximage/ximagesink.c:696:29: warning: unused variable ‘state’ [-Wunused-variable] 696 | GstNavigationModifierType state = GST_NAVIGATION_MODIFIER_NONE; | ^~~~~ ../subprojects/gst-plugins-base/sys/ximage/ximagesink.c:694:35: warning: unused variable ‘touch_frame_open’ [-Wunused-variable] 694 | gboolean pointer_moved = FALSE, touch_frame_open = FALSE; | ^~~~~~~~~~~~~~~~ ../subprojects/gst-plugins-base/sys/xvimage/xvimagesink.c: In function ‘gst_xv_image_sink_handle_xevents’: ../subprojects/gst-plugins-base/sys/xvimage/xvimagesink.c:427:35: warning: unused variable ‘touch_frame_open’ [-Wunused-variable] 427 | gboolean pointer_moved = FALSE, touch_frame_open = FALSE; | ^~~~~~~~~~~~~~~~ ../subprojects/gst-plugins-base/sys/xvimage/xvimagesink.c:426:29: warning: unused variable ‘state’ [-Wunused-variable] 426 | GstNavigationModifierType state = GST_NAVIGATION_MODIFIER_NONE; | ^~~~~ ``` Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2093> 2022-04-21 10:21:37 -0400 Thibault Saunier <tsaunier@igalia.com> * tests/validate/convertscale/convert_disable_scale.validatetest: * tests/validate/convertscale/convert_disable_scale/flow-expectations/log-converter-src-expected: * tests/validate/convertscale/scale_disable_convert.validatetest: * tests/validate/convertscale/scale_disable_convert/flow-expectations/log-scaler-src-expected: tests: convertscale: Do not log EOS events in validateflow We already checked that we are getting an EOS before going back to ready and adding the EOS at the end of the .validateflow is racy as the ERROR message might reach the bus before it is logged. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2264> 2022-04-14 09:48:14 -0400 Thibault Saunier <tsaunier@igalia.com> * docs/plugins/gst_plugins_cache.json: * gst/videoconvertscale/gstvideoconvert.c: * gst/videoconvertscale/gstvideoconvertscale.c: * gst/videoconvertscale/gstvideoconvertscale.h: * gst/videoconvertscale/gstvideoscale.c: * tests/validate/convertscale/convert_disable_scale.validatetest: * tests/validate/convertscale/convert_disable_scale/flow-expectations/log-converter-src-expected: * tests/validate/convertscale/scale_disable_convert.validatetest: * tests/validate/convertscale/scale_disable_convert/flow-expectations/log-scaler-src-expected: * tests/validate/meson.build: videoconvertscale: Add properties to disable scaling/converting in videoconvert/videoscale Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/898> 2021-05-21 18:55:25 -0400 Thibault Saunier <tsaunier@igalia.com> * gst/videoconvertscale/gstvideoconvert.c: * gst/videoconvertscale/gstvideoconvertscale.c: * gst/videoconvertscale/gstvideoconvertscale.h: * gst/videoconvertscale/gstvideoscale.c: videoconvertscale: Don't claim we can support any kind of memory Since d0133a2d11566ff4c0cded7af8dfdff0046e0e8b "videoconvert: Allow passthrough for ANY caps features" videoconvert will always claim that it supports any kind of memory which is true in very specific case (when it is running in passthrough mode). To get elements that autoplug converters depending on the caps running in the pipeline (like autovideoconvert), we need to have converters no lie about what they can do when queried `accept_caps` or `query_caps`. This still accepts any caps feature as before but it introduces a restriction in the way we handle memory capsfeatures. We keep previous behaviour in videoconvert and videoscale. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/898> 2020-04-17 15:23:03 -0400 Thibault Saunier <tsaunier@igalia.com> * docs/plugins/gst_plugins_cache.json: * gst/meson.build: * gst/videoconvert/gstvideoconvert.c: * gst/videoconvert/meson.build: * gst/videoconvertscale/README: * gst/videoconvertscale/gstvideoconvert.c: * gst/videoconvertscale/gstvideoconvert.h: * gst/videoconvertscale/gstvideoconvertscale.c: * gst/videoconvertscale/gstvideoconvertscale.h: * gst/videoconvertscale/gstvideoconvertscaleplugin.c: * gst/videoconvertscale/gstvideoscale.c: * gst/videoconvertscale/gstvideoscale.h: * gst/videoconvertscale/meson.build: * gst/videoscale/README: * gst/videoscale/meson.build: * meson_options.txt: Introduce the videocolorscale element Now that videoconvert and videoscale's are both based on GstVideoConverter and are using the exact same code, it makes much more sense to have one element doing the two operation, and it can be more efficient in some cases (one single path for both operations). This removes the `videoscale` and `videoconvert` plugins but keeps the element but makes them also do both operations (adding some APIs to each element). There is a small change in API for the `videoscale:dither` property which was previously a totally unused boolean, it is now an enum and is used. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/898> 2022-04-07 19:36:25 +0300 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/sdp/gstsdpmessage.c: sdp: Parse the RFC5576 Source-specific media SDP attributes into caps The format of the caps fields is ssrc-(SSRC_VALUE)-(ATTRIBUTE_NAME)=(ATTRIBUTE_VALUE) . Parsing of the attributes from the caps into the SDP is not implemented as this depends not only a single stream's caps but on the whole rtpbin configuration. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2132> 2022-04-18 18:53:45 +0900 Camilo Celis Guzman <camilo@pexip.com> * ext/gl/gstglmixerbin.c: gstglmixerbin: minor refactor of _find_element_pad_template As suggested by @slomo, make the loop more readable and prevent returning a garbage value to the caller from the previous implementation. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2232> 2022-03-25 10:18:34 -0400 Xavier Claessens <xavier.claessens@collabora.com> * meson.build: Always define ENABLE_NLS GLib guarantees libintl API is always available, provided by proxy-libintl as last resort. GLib itself unconditionally define ENABLE_NLS. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2028> 2022-03-25 10:20:24 -0400 Xavier Claessens <xavier.claessens@collabora.com> * gst-libs/gst/gettext.h: * gst-libs/gst/gst-i18n-app.h: * gst-libs/gst/gst-i18n-plugin.h: Delete unused i18n headers Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2028> 2022-03-25 09:59:23 -0400 Xavier Claessens <xavier.claessens@collabora.com> * ext/alsa/gstalsaelement.c: * ext/alsa/gstalsaplugin.c: * ext/alsa/gstalsasink.c: * ext/alsa/gstalsasrc.c: * ext/cdparanoia/gstcdparanoiasrc.c: * ext/gl/gstgltestsrc.c: * ext/ogg/gstoggdemux.c: * gst-libs/gst/audio/gstaudiobasesrc.c: * gst-libs/gst/audio/gstaudiocdsrc.c: * gst-libs/gst/gl/gstglbasesrc.c: * gst-libs/gst/pbutils/descriptions.c: * gst-libs/gst/pbutils/missing-plugins.c: * gst-libs/gst/pbutils/pbutils.c: * gst-libs/gst/tag/gsttagdemux.c: * gst-libs/gst/tag/lang.c: * gst-libs/gst/tag/tags.c: * gst/encoding/gstencodebasebin.c: * gst/encoding/gstencodingelements.c: * gst/playback/gstdecodebin2.c: * gst/playback/gstparsebin.c: * gst/playback/gstplaybackelement.c: * gst/playback/gstplaybackplugin.c: * gst/playback/gstplaybin2.c: * gst/playback/gstplaybin3.c: * gst/playback/gstplaysink.c: * gst/playback/gstplaysinkaudioconvert.c: * gst/playback/gstplaysinkconvertbin.c: * gst/playback/gstplaysinkvideoconvert.c: * gst/playback/gsturidecodebin.c: * gst/playback/gsturidecodebin3.c: * gst/playback/gsturisourcebin.c: * gst/tcp/gstmultifdsink.c: * gst/tcp/gstmultihandlesink.c: * gst/tcp/gstmultisocketsink.c: * gst/tcp/gstsocketsrc.c: * gst/tcp/gsttcpclientsink.c: * gst/tcp/gsttcpclientsrc.c: * gst/tcp/gsttcpserversink.c: * gst/tcp/gsttcpserversrc.c: * tools/gst-device-monitor.c: * tools/gst-play.c: Replace gst-i18n-*.h with gi18n-lib.h GLib guarantees libintl is always present, using proxy-libintl as last resort. There is no need to mock gettex API any more. This fix static build on Windows because G_INTL_STATIC_COMPILATION must be defined before including libintl.h, and glib does it for us as part as including glib.h. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2028> 2022-03-25 11:21:03 -0400 Xavier Claessens <xavier.claessens@collabora.com> * tools/gst-play.c: gst-play: Do not split translatable string Concatenating N_() strings does not work with gi18n.h macro, was working only with GStreamer's redefinition. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2028> 2021-12-08 11:48:08 +0000 Thibault Saunier <tsaunier@igalia.com> * gst-libs/gst/gl/meson.build: cuda: Factor out a public GstCUDA library So applications and elements implemented outside GStreamer can reuse our infrastructure Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1472> 2022-04-19 11:05:05 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst-libs/gst/video/video-format.c: * gst-libs/gst/video/video-frame.c: video: Fix possible overrun when iterating comp[] array Fix 2 iterations that can overrun the array if the number of component is equal to the size of the array. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2239> 2022-04-19 10:53:15 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst-libs/gst/video/video-frame.c: Revert "video-frame: avoid possible out of bound memory access" This reverts commit c4255f08f787ff6a41504b538fa4c2e911d40ec7. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2239> 2022-04-18 15:44:47 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst-libs/gst/sdp/meson.build: meson: Add -Wl,-rpath,${libdir} on macOS We made the gstreamer installation prefix relocatable by picking up plugins relative to the location of libgstreamer-1.0.dylib, similar to how it's done for Windows: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1627 This had a lot of side-effects: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1051 https://gitlab.freedesktop.org/gstreamer/cerbero/-/issues/363 https://gitlab.freedesktop.org/gstreamer/cerbero/-/issues/371 https://gitlab.freedesktop.org/gstreamer/cerbero/-/issues/362 A partial fix for the cerbero side of these was: https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/807 However, this relied on the consumers knowing that they need to add `LC_RPATH` entries to the libdir of the prefix. This is done automatically by build systems like Meson, but not by others, such as Autotools, CMake, Cargo, XCode, etc. For those, we need to add the RPATH entries to the gstreamer-1.0.pc file. This also has the side-effect of fixing the loading of gstreamer rust plugins on macOS: Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1159 Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1149 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2218> 2022-04-18 18:14:44 +0900 Camilo Celis Guzman <camilo@pexip.com> * gst-libs/gst/video/video-frame.c: video-frame: avoid possible out of bound memory access Although the components' initialization code would fill in -1 to all unset components, make the code a bit more defensive and check for an index bound first. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2231> 2021-11-12 20:13:10 +0100 Ruben Gonzalez <rgonzalez@fluendo.com> * docs/plugins/gst_plugins_cache.json: gst_plugin_load_file: force plugin reload if diff filename If a file includes a new version of a plugin that exits in the registry, the output of gst-inspect is incorrect. The output has the correct version but incorrect filename, and element description. This seems to have also fixed some documentation issues. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1344> 2021-05-25 14:41:51 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.com> * gst/playback/gstdecodebin3.c: decodebin3: fix collection leak get_merged_collection() returns an owned stream collection and was leaked in the else block. Fix leak when running: GST_TRACERS=leaks GST_DEBUG="GST_TRACER:7,leaks:6" gst-play-1.0 --use-playbin3 test.mkv Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/954> 2022-04-15 14:03:08 +0900 hoonhee.lee <hoonhee.lee@lge.com> * gst/playback/gstplaybin3.c: playbin3: fix missing lock when unknown stream type in pad-removed cb Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2193> 2022-04-14 15:21:48 +0200 Edward Hervey <edward@centricular.com> * gst/playback/gstdecodebin3.c: decodebin3: Don't duplicate stream selections Make sure that the requested stream selection isn't identical to the current one. If that's the case, just carry on as usual. This avoids multiple `streams-selected` posting ... when the selection didn't change. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2185> 2022-04-14 18:44:48 +0100 Tim-Philipp Müller <tim@centricular.com> * gst-libs/gst/app/gstappsrc.c: appsrc: fix annotations Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2188> 2022-04-15 19:55:34 +0300 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/rtp/gstrtpbasepayload.c: rtpbasepayload: Don't write header extensions if there's no corresponding input buffer for the packet The GstRTPHeaderExtension API requires the input buffer to exist. This can happen if the output packet is generated e.g. from a caps or tags event like in the case for rtpgstpay. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2198> 2022-04-14 20:10:46 +1000 Brad Hards <bradh@frogmouth.net> * tests/interactive/audio-trickplay.c: * tests/interactive/benchmark-appsink.c: * tests/interactive/benchmark-appsrc.c: * tests/interactive/benchmark-video-conversion.c: * tests/interactive/input-selector-test.c: * tests/interactive/meson.build: * tests/interactive/output-selector-test.c: * tests/interactive/playback/decodetest.c: * tests/interactive/playback/test.c: * tests/interactive/playback/test2.c: * tests/interactive/playback/test3.c: * tests/interactive/playback/test4.c: * tests/interactive/playback/test5.c: * tests/interactive/playback/test6.c: * tests/interactive/playback/test7.c: * tests/interactive/playbin-text.c: * tests/interactive/position-formats.c: * tests/interactive/stress-playbin.c: * tests/interactive/stress-videooverlay.c: * tests/interactive/test-box.c: * tests/interactive/test-colorkey.c: * tests/interactive/test-effect-switch.c: * tests/interactive/test-header-compile: * tests/interactive/test-overlay-blending.c: * tests/interactive/test-resample.c: * tests/interactive/test-reverseplay.c: * tests/interactive/test-scale.c: * tests/interactive/test-textoverlay.c: * tests/interactive/test-videooverlay.c: * tests/meson.build: tests: rename 'icles' subdir to be more descriptive Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2178> 2022-04-12 01:35:43 +0900 Seungha Yang <seungha@centricular.com> * tools/meson.build: meson: gst-play: Restore Windows high-resolution timer support Fix regression of the commit 2952a73f4083487f33ae83407bef5245d2f8fef2 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2154> 2022-04-12 01:01:23 +0900 Seungha Yang <seungha@centricular.com> * tools/gst-play.c: * tools/meson.build: win32: Enable high-resolution timer for MinGW build timeapi.h is missing in our MinGW toolchain. Include mmsystem.h header instead, which defines struct and APIs in case of our MinGW toolchain. Note that in case of native Windows10 SDK (MSVC build), mmsystem.h will include timeapi.h Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2153> 2022-04-12 15:23:08 +0300 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/rtp/gstrtpbasepayload.c: Fix `transfer` gobject-introspection annotation typos Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2160> 2022-04-10 10:55:02 +1000 Matthew Waters <matthew@centricular.com> * gst/subparse/gstsubparseelement.c: subparse: don't try to index string with -1 If the len of the string turns out to be 0, str[len - 1] resolved to str[-1] which is not a good idea. Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=46543 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2147> 2022-04-08 11:10:49 +1000 Matthew Waters <matthew@centricular.com> * ext/ogg/gstoggstream.c: * ext/ogg/vorbis_parse.c: * ext/ogg/vorbis_parse.h: ogg: fix possible buffer overrun If an ogg stream does not match our expectations of how the end of a buffer may be structured, it was possible to read memory past the end of the buffer parsed by libogg. Include a bounds check for this case and stop parsing. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3930 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2134> 2022-04-08 01:52:32 +0200 Mathieu Duponchelle <mathieu@centricular.com> * gst-libs/gst/rtp/gstrtpbasepayload.c: rtpbasepayload: fix transfer annotation for push and push_list Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2133> 2022-04-07 10:08:37 +0900 hoonhee.lee <hoonhee.lee@lge.com> * gst-libs/gst/riff/riff-media.c: riff-media: fix memory leak after usage for g_strjoin This leak is observed with valgrind. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2129> 2022-04-06 18:08:46 +0200 Bastian Krause <bst@pengutronix.de> * ext/gl/gstgltransformation.c: * ext/gl/gstgltransformation.h: gltransformation: let graphene alloc its structures memory aligned With NEON instructions enabled, graphene expects the memory passed to it 16-byte-aligned. Otherwise unaligned memory access faults occur causing SIGBUS signals. graphene has alloc functions for its structures that take care of this, so use them. See also: https://github.com/ebassi/graphene/issues/215#issuecomment-794744829 Suggested-by: Sebastian Dröge <sebastian@centricular.com> Signed-off-by: Bastian Krause <bst@pengutronix.de> Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1321> 2022-04-04 10:46:24 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst-libs/gst/app/gstappsrc.c: appsrc: Clarify buffer ref semantics in signals The documentation could be read to mean that the caller continuous to 'own' the buffer, and that there is some other mechanism to find out when to unref it. Clarify that "not taking ownership" here means "taking a reference", and specify that you can unref it at any time after calling the function. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2110> 2021-01-21 16:01:38 +0800 Zhao Zhili <quinkblack@foxmail.com> * tests/examples/gl/gtk/gstgtk.c: * tests/examples/playback/playback-test.c: examples: fix build on macOS with gtk+-quartz-3.0 gdk_quartz_window_get_nsview is not declared in the header file now: error: implicit declaration of function 'gdk_quartz_window_get_nsview' is invalid in C99 [-Werror,-Wimplicit-function-declaration] fixes #979 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2095> 2022-04-01 21:47:59 +0800 Haihua Hu <jared.hu@nxp.com> * ext/gl/gstglelement.c: * sys/ximage/ximage.c: * sys/xvimage/xvimage.c: * tests/check/elements/glfilter.c: * tests/check/elements/glimagesink.c: * tests/check/elements/glmixer.c: * tests/check/elements/glstereo.c: * tools/gst-play.c: ximagesink/xvimagesink: use GST_XINITTHREADS to ensure call to XInitThreads Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2098> 2022-03-30 11:06:02 -0400 Xavier Claessens <xavier.claessens@collabora.com> * meson.build: Use gmodule-no-export-2.0 We don't need `-Wl,--export-dynamic`, that's used only for executables that needs to export an API to be used by plugins they load. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2031> 2022-03-25 15:00:20 -0400 Xavier Claessens <xavier.claessens@collabora.com> * ext/alsa/meson.build: * ext/cdparanoia/meson.build: * ext/libvisual/meson.build: * ext/ogg/meson.build: * ext/opus/meson.build: * ext/pango/meson.build: * ext/theora/meson.build: * ext/vorbis/meson.build: * gst-libs/gst/sdp/meson.build: * gst/tcp/meson.build: * gst/videoscale/meson.build: * gst/videotestsrc/meson.build: * gst/volume/meson.build: * meson.build: * sys/ximage/meson.build: * sys/xvimage/meson.build: * tests/check/meson.build: * tests/examples/app/meson.build: * tests/examples/audio/meson.build: * tests/examples/decodebin_next/meson.build: * tests/examples/dynamic/meson.build: * tests/examples/encoding/meson.build: * tests/examples/fft/meson.build: * tests/examples/gio/meson.build: * tests/examples/overlay/meson.build: * tests/examples/playback/meson.build: * tests/examples/playrec/meson.build: * tests/examples/seek/meson.build: * tests/examples/snapshot/meson.build: * tools/meson.build: Remove glib and gobject dependencies everywhere They are part of gst_dep already and we have to make sure to always have gst_dep. The order in dependencies matters, because it is also the order in which Meson will set -I args. We want gstreamer's config.h to take precedence over glib's private config.h when it's a subproject. While at it, remove useless fallback args for gmodule/gio dependencies, only gstreamer core needs it. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2031> 2022-03-31 12:47:06 +0200 Xabier Rodriguez Calvar <calvaris@igalia.com> * gst-libs/gst/gl/gstglcolorconvert.c: glcolorconvert: should copy metadatas from the incoming buffer Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2094> 2022-04-01 10:25:23 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/playback/gstplaybin2.c: * gst/playback/gstplaybin3.c: playbin/playbin3: Allow setting a NULL URI The URI is already initialized to NULL at the beginning and GstPlayer was assuming that it is possible to set to NULL at a later time too. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1124 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2090> 2022-03-31 23:41:41 +0200 Thibault Saunier <tsaunier@igalia.com> * gst-libs/gst/video/navigation.c: * gst-libs/gst/video/navigation.h: navigation: Rename parse_state to parse_modifier_state `parse_state` sounds a bit weird and `parse_modifier_state` is clearer. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2087> 2022-03-29 17:51:13 +0200 Stéphane Cerveau <scerveau@collabora.com> * gst-libs/gst/gl/meson.build: * tests/check/libs/gstglmatrix.c: * tests/check/meson.build: base:gl: add x11 deps to gstglx11_dep On MacOS with homebrew the xlib-xcb.h is in own cellar /opt/homebrew/Cellar/libx11/1.7.3.1/include Need to add the windowing dependencies to gl tests Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2061> 2020-03-30 15:16:29 -0400 Xavier Claessens <xavier.claessens@collabora.com> * tests/examples/overlay/meson.build: overlay: Fix qt support detection On Ubuntu moc-qt5 command is called moc. This requires Meson 0.54.0 for the new has_tools() method. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2075> 2022-03-29 22:16:14 +0900 Seungha Yang <seungha@centricular.com> * tools/gst-play-kb.c: gst-play: Improve Win32 keyboard input handling The console HANDLE will be keep signalled state unless application reads console input buffer immediately. So we should read and flush console input buffer from the thread where the event is signalled, instead of GMain context thread. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2058> 2021-09-11 12:17:56 -0300 Thibault Saunier <tsaunier@igalia.com> * meson.build: * tools/meson.build: tools: Add support for building gstreamer tools against gst-full Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1581> 2022-03-28 18:43:27 +0200 Enrique Ocaña González <eocanha@igalia.com> * gst/playback/gstplaysink.c: playsink: improve GL context sharing Configure playsink tried element with the bus of the main pipeline. That tried element can be a gl video sink, which would benefit from being able to propagate context messages to the main pipeline and have other internal pipeline elements configured with it. Having different elements configured with the same GL context allows them to share buffers with video/x-raw(memory:GLMemory) caps and achieving zero-copy. Thanks to Alicia Boya García <aboya@igalia.com> for her work co-debugging the issue and contributing to find a solution. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2056> 2021-06-09 11:25:36 +0200 Edward Hervey <edward@centricular.com> * gst/playback/gsturisourcebin.c: urisourcebin: When streams-aware, remove pads immediately For the same reason we add them immediately Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1905> 2021-06-08 14:31:10 +0200 Edward Hervey <edward@centricular.com> * gst/playback/gsturisourcebin.c: urisourcebin: Don't wait for pads content when streams-aware If the adaptive demux is streams-aware it can add/remove pads at any point in time without the need for no-more-pads or data blocking Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1905> 2021-05-29 07:31:15 +0200 Edward Hervey <edward@centricular.com> * gst/playback/gsturisourcebin.c: urisourcebin: Don't do buffering if source already does Sources that can internally handle buffering shouldn't have yet-another buffering element after it. This can be simply detected by checking if it can answer a TIME BUFFERING query just after creation. If that is the case, we can expose the element source pads directly Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1905> 2021-05-28 07:49:10 +0200 Edward Hervey <edward@centricular.com> * gst/playback/gstdecodebin3.c: decodebin3: Handle upstream selection Detect if upstream handles stream-selection, and if so bypass all stream selection handling (streams are forwarded as-is). Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1905> 2022-03-28 12:13:12 +0200 Edward Hervey <edward@centricular.com> * gst-libs/gst/pbutils/descriptions.c: pbutils: Fix wmv screen detection strncmp vs !strncmp :) Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2050> 2022-03-28 10:10:45 +0300 Sebastian Dröge <sebastian@centricular.com> * docs/plugins/gst_plugins_cache.json: * gst-libs/gst/video/video-format.h: video-format: Move NV12_8L128 into the correct position in GST_VIDEO_FORMATS_ALL Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2045> 2022-03-16 10:31:56 +0000 Corentin Damman <c.damman@intopix.com> * gst/rawparse/gstrawvideoparse.c: rawvideoparse: set format from caps in gst_raw_video_parse_set_config_from_caps Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1970> 2022-03-27 16:35:14 +1100 Matthew Waters <matthew@centricular.com> * ext/gl/gstglmixerbin.c: glmixerbin: slightly better pad/element creation Use the return value from gst_element_link_pads() and gst_bin_add() Fixes: ../ext/gl/gstglmixerbin.c:305:12: error: variable 'res' set but not used [-Werror,-Wunused-but-set-variable] gboolean res = TRUE; ^ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2038> 2022-03-25 13:00:13 +0100 Stéphane Cerveau <scerveau@collabora.com> * gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m: gl: cocoa: fix warnings of unused variables Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2026> 2022-03-18 16:59:32 +0000 Thibault Saunier <tsaunier@igalia.com> * ext/gl/gstglimagesink.c: * gst-libs/gst/video/navigation.c: * gst-libs/gst/video/navigation.h: * sys/ximage/ximagesink.c: * sys/xvimage/xvimagesink.c: * tests/check/libs/navigation.c: * tests/examples/playback/playback-test.c: navigation: Add support for key Modifiers in all relevant events Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2010> 2022-03-24 13:01:52 +0100 Vivienne Watermeier <vwatermeier@igalia.com> * gst-libs/gst/video/navigation.c: * gst-libs/gst/video/navigation.h: navigation: Add missing annotation to send_event_simple Adds the missing "transfer full" annotation for the event argument. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2017> 2022-03-22 21:13:31 +0100 Vivienne Watermeier <vwatermeier@igalia.com> * sys/xvimage/meson.build: * sys/xvimage/xvcontext.c: * sys/xvimage/xvcontext.h: * sys/xvimage/xvimagesink.c: xvimagesink: Add touch event support Send touch events for XI_TouchBegin, XI_TouchEnd, and XI_TouchUpdate events, grouping events with identical timestamps into one TOUCH_FRAME. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1633> 2022-02-03 15:01:46 +0100 Vivienne Watermeier <vwatermeier@igalia.com> * meson_options.txt: * sys/meson.build: * sys/ximage/meson.build: * sys/ximage/ximagesink.c: * sys/ximage/ximagesink.h: ximagesink: Add touch event support Send touch events for XI_TouchBegin, XI_TouchEnd, and XI_TouchUpdate events, grouping events with identical timestamps into one TOUCH_FRAME. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1633> 2022-01-31 20:25:23 +0100 Vivienne Watermeier <vwatermeier@igalia.com> * gst-libs/gst/video/navigation.c: * gst-libs/gst/video/navigation.h: navigation: Add API for touchscreen events Add 5 new navigation event types for touchscreen events, with the same naming and meaning as in libinput - touch-down, touch-motion, touch-up, touch-frame and touch-cancel - as well as constructors and parse functions for them. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1633> 2022-02-14 16:08:23 +0100 Vivienne Watermeier <vwatermeier@igalia.com> * ext/gl/gstglimagesink.c: * ext/gl/gstglsinkbin.c: * ext/gl/gstgltransformation.c: * gst/playback/gstplaybin2.c: * gst/playback/gstplaybin3.c: * gst/playback/gstplaysink.c: * gst/videoscale/gstvideoscale.c: * sys/ximage/ximagesink.c: * sys/xvimage/xvimagesink.c: * tests/check/libs/navigation.c: * tests/examples/playback/playback-test.c: all: Use new navigation interface and API Use and implement the new navigation interface in all relevant sink elements, and use API functions everywhere instead of directy accessing the event structure. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1633> 2022-02-14 14:22:29 +0100 Vivienne Watermeier <vwatermeier@igalia.com> * gst-libs/gst/video/navigation.c: * gst-libs/gst/video/navigation.h: navigation: Add coordinate helper functions Add a function to get x/y coordinates from suitable navigation events, and one to create a copy with given coordinate values. For e.g. translating event coordinates, this avoids having to either switch on the event type to select the right parse function, or having to rely on implementation details of the underlying event structure. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1633> 2022-02-14 14:06:12 +0100 Vivienne Watermeier <vwatermeier@igalia.com> * gst-libs/gst/video/navigation.c: * gst-libs/gst/video/navigation.h: * tests/check/libs/struct_aarch64.h: * tests/check/libs/struct_arm.h: * tests/check/libs/struct_i386.h: * tests/check/libs/struct_i386_osx.h: * tests/check/libs/struct_ppc32.h: * tests/check/libs/struct_ppc64.h: * tests/check/libs/struct_x86_64.h: navigation: Improve interface to avoid exposing implementation details This deprecates the current send_event interface, and the wrapper functions based on it, replacing it with a send_event_simple interface and wrapper function. Together with the new event constructors, this avoids implementations having to directly access the underlying structure. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1633> 2022-03-18 16:34:38 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * docs/plugins/gst_plugins_cache.json: doc: Update cache after NV12_8L128 addition Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1379> 2021-08-12 11:00:11 +0800 Ming Qian <ming.qian@nxp.com> * gst-libs/gst/video/video-converter.c: * gst-libs/gst/video/video-format.c: * gst-libs/gst/video/video-format.h: * gst-libs/gst/video/video-info.c: * tests/check/elements/videoscale.c: * tests/check/libs/video.c: video: Add support for linear 8x128 NV12 tiles and 10bit BE tiles This adds linear 8x128 NV12 based tiles and NV12 10bit big endian tiles. These formats are used by i.MX 8QXP/8QM VPU and exposed in V4L2. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1379> 2022-03-18 13:42:27 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * meson.build: meson: Bump all meson requirements to 0.60 Lots of new warnings ever since https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1934 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1977> 2022-03-18 20:43:24 +1100 Matthew Waters <matthew@centricular.com> * gst-libs/gst/pbutils/gstdiscoverer-types.c: discoverer: chain up to parent finalize methods in all our types Fixes a memory leak: Direct leak of 32 byte(s) in 1 object(s) allocated from: #0 0x5ac5cd in malloc /src/llvm-project/compiler-rt/lib/asan/asan_malloc_linux.cpp:129:3 #1 0x1007007 in g_malloc /work/glib-2.72.0/_builddir/../glib/gmem.c:125:13 #2 0xf82e82 in g_data_set_internal /work/glib-2.72.0/_builddir/../glib/gdataset.c:464:8 #3 0xf833f7 in g_datalist_id_set_data_full /work/glib-2.72.0/_builddir/../glib/gdataset.c:670:3 #4 0xef81be in g_object_notify_queue_freeze /work/glib-2.72.0/_builddir/../gobject/gobject.c:295:7 #5 0xef79c6 in g_object_unref /work/glib-2.72.0/_builddir/../gobject/gobject.c:3632:16 #6 0x5e58bf in LLVMFuzzerTestOneInput /src/gstreamer/ci/fuzzing/gst-discoverer.c:132:5 #7 0x4dd1a2 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:611:15 #8 0x4dc98a in fuzzer::Fuzzer::RunOne(unsigned char const*, unsigned long, bool, fuzzer::InputInfo*, bool, bool*) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:514:3 #9 0x4de6c4 in fuzzer::Fuzzer::ReadAndExecuteSeedCorpora(std::__Fuzzer::vector<fuzzer::SizedFile, std::__Fuzzer::allocator<fuzzer::SizedFile> >&) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:809:5 #10 0x4dea29 in fuzzer::Fuzzer::Loop(std::__Fuzzer::vector<fuzzer::SizedFile, std::__Fuzzer::allocator<fuzzer::SizedFile> >&) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:857:3 #11 0x4ce4a0 in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerDriver.cpp:912:6 #12 0x4f6f52 in main /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerMain.cpp:20:10 #13 0x7f1c709980b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x240b2) Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1984> 2022-01-17 16:10:37 +0100 Vivienne Watermeier <vwatermeier@igalia.com> * ext/gl/gstglvideomixer.c: * tests/check/libs/gstglvideomixerelement.c: * tests/check/meson.build: glvideomixerelement: send translated navigation events to the relevant sink pads Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1495> 2022-01-05 19:33:06 +0100 Vivienne Watermeier <vwatermeier@igalia.com> * gst/compositor/compositor.c: * tests/check/elements/compositor.c: compositor: send translated navigation events to the relevant sink pads Fixes #888 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1495> 2022-03-15 13:59:16 +0100 Corentin Noël <tintou@noel.tf> * gst-libs/gst/audio/gstaudiodecoder.h: * gst-libs/gst/audio/gstaudioringbuffer.c: * gst-libs/gst/audio/gstaudiosink.h: * gst-libs/gst/audio/gstaudiosrc.h: * gst-libs/gst/video/gstvideoaggregator.h: * gst-libs/gst/video/video-chroma.c: * gst-libs/gst/video/video-scaler.c: gst-plugins-base: Fix several annotations Add annotations for virtual methods when possible. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1965> 2021-12-16 18:41:38 +0000 Tim-Philipp Müller <tim@centricular.com> * docs/plugins/gst_plugins_cache.json: * ext/opus/gstopusenc.c: opusenc: change default bitrate-type from cbr to constrained-vbr Which is the default in libopus itself as well, with a comment that constrained-vbr is considered "safer for real-time use". Unclear why CBR was the default in the first place. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1451> 2022-03-15 12:57:49 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst-libs/gst/rtp/gstrtpbuffer.c: rtpbuffer: The out args for rtp extension data are optional The code checks that these are != NULL before dereferencing them. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1962> 2022-03-10 10:25:53 +0100 Bastien Nocera <hadess@hadess.net> * gst-libs/gst/video/convertframe.c: * meson.build: convertframe: Add support for GL-memory backend GstFrame input Add "gldownload" early in the pipeline so that GL-memory backed raw frames can be downloaded and processed on the CPU. Closes: #1073 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1916> 2022-03-11 18:08:14 -0500 Xavier Claessens <xavier.claessens@collabora.com> * gst-libs/gst/gl/meson.build: Meson: Set install_tag on some files Meson tries to guess the tag (runtime, devel, etc) for every installed file, but it cannot guess them all. There is a list at the end of meson-log.txt of files we need to tag manually. See https://mesonbuild.com/Installing.html#installation-tags. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1934> 2022-03-02 03:45:48 +1100 Jan Schmidt <jan@centricular.com> * gst/playback/gstplaybin3.c: playbin3: Remove stale code Remove now-unused get_stream_type_for_event() function. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1900> 2022-01-21 16:23:38 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gstdecodebin3.c: decodebin3: Reset parsebin when new caps arrive Check if parsebin can handle the new caps, and if not reset it so that it can reconfigure itself for the new stream format. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1900> 2022-03-09 10:15:08 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gstdecodebin3.c: decodebin3: Convert checks to assertions "decodebin.input" is never resetted and should always be present, therefore make it an assertion check Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1900> 2022-01-21 14:52:07 +0100 Edward Hervey <edward@centricular.com> * gst/playback/gstparsebin.c: parsebin: Implement ACCEPT_CAPS handling The default query handler would go through typefind, which by default accepts any CAPS. But once configured, parsebin can't reconfigure itself, it should therefore pass through the ACCEPT_CAPS query to the first element after typefind (if any). Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1900> 2022-01-18 05:48:08 +1100 Jan Schmidt <jan@centricular.com> * gst/playback/gstplaybin3.c: playbin3: Hold playbin lock on pad-added Take the playbin lock when accessing the combiner to add a new pad to link to. Fixes races against streams-selected messages triggering reconfiguration. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1900> 2022-01-18 02:52:47 +1100 Jan Schmidt <jan@centricular.com> * gst/playback/gstplaybin3.c: playbin3: Reconfigure on streams-selected message. Don't reconfigure outputs when the select-streams event is sent from the app, as the selection may not take effect for some time. Instead, wait for the pipeline to confirm the new set of selected streams when it sends the message. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1900> 2021-11-11 03:20:23 +1100 Jan Schmidt <jan@centricular.com> * gst/playback/gstplaysink.c: playsink: Fix reconfiguration after removing text_sink If we previously had subtitles coming in, the video may be chained through a text overlay block. Before, the code would end up trying to link pads that were already linked and video would not get reconnected properly. To fix that, make sure that the candidate pads are actually unlinked first. If a textoverlay is present and no longer needed, it will be cleaned up later in the reconfiguration sequence. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1900> 2021-08-06 19:27:02 +1000 Jan Schmidt <jan@centricular.com> * gst/playback/gstplaysink.c: playsink: Complete reconfiguration on pad release. Requesting a new pad can start a reconfiguration cycle, where playsink will block all input pads and wait for data on them before doing internal reconfiguration. If a pad is released, that reconfiguration might never trigger because it's now waiting for a pad that doesn't exist any more. In that case, complete the reconfiguration on pad release. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1180> 2022-03-08 09:46:33 +0100 Edward Hervey <edward@centricular.com> * gst-libs/gst/pbutils/codec-utils.c: * gst-libs/gst/pbutils/codec-utils.h: * tests/check/libs/pbutils.c: pbutils: Add function to parse RFC 6381 codecs field This is the opposite of `gst_codec_utils_caps_get_mime_codec()`, which allows elements to get the `GstCaps` Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1894> 2022-03-09 16:02:06 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst-libs/gst/rtp/gstrtpbasepayload.c: * tests/check/libs/rtpbasepayload.c: rtpbasepayload: Remove dead twcc code This feature was removed in 7a53fbad68d702ca4905f7da223f4d2884548edc, but this code was left behind. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1902> 2021-12-14 16:14:56 +0100 Edward Hervey <edward@centricular.com> * gst/subparse/gstsubparse.c: subparse: Handle GAP events before buffers Make sure we did initial negotiation and segment pushing if we get GAP events before buffers. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1903> 2021-11-17 15:30:38 +0100 Edward Hervey <edward@centricular.com> * gst-libs/gst/tag/gsttagdemux.c: tagdemux: Properly propagate sequence numbers If we received a time segment from upstream, we need to make sure we propagate it downstream with the same sequence number. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1903> 2022-03-02 03:43:00 +1100 Jan Schmidt <jan@centricular.com> * gst/playback/gstplaybin3.c: playbin3: Add lock to protect buffering messages Fix a small race where a group can receive stream-start and post a pending buffering message just as another thread posts a different buffering message, causing them to be received by the application out of order. In the worst case, this leads the application receiving a stale 99% buffering message and going back to buffering right after the 100% buffering message. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1840> 2022-03-02 12:15:19 +0800 Hou Qi <qi.hou@nxp.com> * gst/encoding/gstencodebasebin.c: encodebasebin: Use GST_DEBUG instead of GST_ERROR when skipping muxer _get_muxer() skips the muxers that do not satisfy the requirement and select the desired one. It should not print error log, so use debug log instead. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1830> 2022-03-04 22:21:13 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/gl/gstgldisplay.c: gldisplay: Reorder GST_GL_WINDOW check for egl-device "egl-device" should be checked before the "egl", otherwise unexpected egl will be picked Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1853> 2022-02-24 01:41:34 +1100 Jan Schmidt <jan@centricular.com> * tools/gst-play.c: gst-play: Allow switching to previous tracks Implement case sensitive key-press handling, and make 'V', 'A', 'S' switch to the previous video, audio, or subtitle track. The lower-case keypress cycles to the next track, as before Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1841> 2021-09-01 14:02:29 +1000 Matthew Waters <matthew@centricular.com> * gst-libs/gst/sdp/gstsdpmessage.c: * tests/check/libs/sdp.c: sdp: support multiple rid parameters As specified formally in RFC8851 Each rid description is placed in its own caps field in the structure. This is very similar to the already existing extmap-$id sdp<->caps transformations that already exists. The mapping is as follows: a=rid:0 direction ';'-separated params where direction is either 'send' or 'recv' gets put into a caps structure like so: rid-0=(string)<"direction","param1","param2",etc> If there are no rid parameters then the caps structure is generated to only contain the direction as a single string like: rid-0=(string)direction Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1760> 2022-03-02 00:52:22 +1100 Jan Schmidt <jan@centricular.com> * gst/playback/gsturidecodebin3.c: uridecodebin3: Remove dead variables Leftover junk from original port Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1820> 2022-02-21 10:49:15 +0100 Sebastian Fricke <sebastian.fricke@collabora.com> * gst-libs/gst/tag/licenses.c: Remove the uninstalled term Remove the symbolic link `gst-uninstalled` which points to `gst-env`. The `uninstalled` is the old name and the project should stick to a single name for the procedure. Remove the term from all the files, exceptions are variables from dependencies like `uninstalled_variables` from pkgconfig and `meson-uninstalled`. Adjust mentions of the script in the documentation and README. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1743> 2022-02-23 11:10:11 +0100 Sebastian Fricke <sebastian.fricke@collabora.com> * README.md: Maintain build instructions at a single location Do not maintain similar build instructions within each gst-plugins-* subproject and the subproject/gstreamer subproject. Use the build instructions from the mono-repository and link to them via hyperlink. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1743> 2021-12-10 15:51:51 +0100 Célestin Marot <marotcelestin@gmail.com> * gst-libs/gst/video/video-info.c: video-info: encoded format can have RGB color-matrix (Fixes #1435) Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1435> 2022-02-27 13:19:49 +0200 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/video/video-format.c: video-format-info: Use correct parameter name in gst_video_format_info_extrapolate_stride() docs ../subprojects/gst-plugins-base/gst-libs/gst/video/video-format.c:7570: Warning: GstVideo: gst_video_format_info_extrapolate_stride: unknown parameter 'info' in documentation comment, should be 'finfo' Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1803> 2022-02-16 18:49:52 +0200 Sebastian Dröge <sebastian@centricular.com> * docs/plugins/gst_plugins_cache.json: * gst-libs/gst/audio/audio-converter.c: * gst-libs/gst/audio/audio-converter.h: * gst/audioconvert/gstaudioconvert.c: * gst/audioconvert/gstaudioconvert.h: audioconvert: Add dithering-threshold property By default, no dithering is applied if the target bit depth is above 20 bits. This new property allows to apply dithering nonetheless in these cases. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1730> 2022-02-16 13:28:52 +0200 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/audio/audio-quantize.c: audio-quantize: Switch dither PRNG from LCG to xorshift While this is slightly more expensive (~48% slower per random number) it does not cause any measurable difference when running through a complete audio conversion pipeline. On the other hand its random numbers are of much higher quality and on spectrograms for 32 bit to 24 bit conversion the difference is clearly visible. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1729> 2022-01-22 01:30:57 +1100 Jan Schmidt <jan@centricular.com> * tools/gst-play.c: gst-play: Fix trick-mode handling. The instant-rate value in the TrickMode enum is a flag, but the other values are not. Move instant-rate to the end of the enum and give it a value large enough for it to be used without modifying the trick-mode setting. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1788> 2022-02-24 10:09:50 +0200 Sebastian Dröge <sebastian@centricular.com> * tests/check/elements/appsrc.c: appsrc: Store strong references to the expected buffers in the tests Otherwise the buffers might already be freed as they were only owned by the GstSample / appsrc and potentially don't survive until the pad probe, as observed in some CI runs of the tests. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1787> 2022-02-22 15:08:48 +0100 Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> * gst-libs/gst/video/gstvideoaggregator.c: videoaggregator: Correct use of start_time/end_time When 29713c5d changed most uses of `start_time` and `end_time` to `start_running_time` and `end_running_time`, it missed two. Fixes: 29713c5d40a1d7d1f21dada68f55f7a97f0b7025 Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1038 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1779> 2022-02-22 10:54:23 +0200 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/rtp/gstrtpbasepayload.c: rtpbasepayload: Copy all buffer metadata instead of just GstMetas for the input meta buffer This gives RTP header extensions some more metadata to work from. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1774> 2022-02-21 14:23:27 +0200 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/gl/egl/gstglmemoryegl.c: * gst-libs/gst/gl/egl/gstglmemoryegl.h: * gst-libs/gst/gl/gstglbasememory.c: * gst-libs/gst/gl/gstglbasememory.h: * gst-libs/gst/gl/gstglbuffer.c: * gst-libs/gst/gl/gstglbuffer.h: * gst-libs/gst/gl/gstglmemory.c: * gst-libs/gst/gl/gstglmemory.h: * gst-libs/gst/gl/gstglmemorypbo.c: * gst-libs/gst/gl/gstglmemorypbo.h: * gst-libs/gst/gl/gstglrenderbuffer.c: * gst-libs/gst/gl/gstglrenderbuffer.h: gl: Mark GL memory GType functions as deprecated They can't be used in any useful way. The type of every GstMemory is always GST_TYPE_MEMORY and the subtyping relationship has to be implemented on top of that via the associated allocator and mem_type string. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1764> 2022-02-21 15:12:04 +0200 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/gl/gstgldisplay.c: * gst-libs/gst/gl/gstglshaderstrings.c: gl: Add `#ifndef GST_REMOVE_DEPRECATED` for existing deprecated API Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1764> 2022-02-21 15:08:44 +0200 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/gl/gstgldisplay.c: gl: Add versioned `Deprecated` marker to gst_gl_display_find_window Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1764> 2022-02-21 15:05:55 +0200 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/gl/gstgldisplay.h: * gst-libs/gst/gl/gstglshaderstrings.h: gl: Replace existing G_DEPRECATED_FOR usage with GST_GL_DEPRECATED_FOR Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1764> 2022-02-21 15:02:02 +0200 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/gl/gl-prelude.h: gl: Add GST_GL_DEPRECATED Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1764> 2022-02-20 14:05:05 +0100 Sebastian Groß <s3b.gr0ss@gmail.com> * gst-libs/gst/pbutils/gstaudiovisualizer.c: audiovisualizer: shader: Fix dframe out of bound write shader_fade_and_move_horiz_out writes a complete stride at the end of its dframe data This led to SIGSEGV since the stride reached into sframe->map[0]->memory which could not be umpapped later on. This is due to `d` is increased twice. Once at the end of the upper loop and at the start of the lower loop. The corresponding dframe stride is therefore skipped. Rewind `d` and start at the correct position. Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1702 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1751> 2022-02-20 15:20:07 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * docs/plugins/gst_plugins_cache.json: doc: Add NV12_16L32S into the cache Autogenerated by CI Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1567> 2022-02-18 15:25:17 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * tests/check/libs/video.c: tests: video: Add a unit test for stride extrapolation This is a minimal unit test the show that the stride extrapolation can work with all pixel format we support. This minimal verify that the extrapolation match the stride we set into GstVideoInfo with 320x240 for all the pixel format we support. The tiles formats are skipped, since their stride is set as two 16bit integers, and we also skip over palette planes. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1567> 2022-01-25 14:04:13 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst-libs/gst/video/video-format.c: * gst-libs/gst/video/video-format.h: video: Add an helper to extrapolate strides Many of the legacy APIs, specifically in the Linux Kernel, have a single stride for the pictures. In this context, it is common to extrapolate the other strides based on the selected pixel format. Such function have been copy pasted from video4linux2 plugin into wayland, kms and v4l2codecs plugins. This patch implements a generalized from of that function and make it available to everyone through the video library. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1567> 2021-12-02 21:46:59 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst-libs/gst/video/video-converter.c: * gst-libs/gst/video/video-format.c: * gst-libs/gst/video/video-format.h: * gst-libs/gst/video/video-frame.c: * gst-libs/gst/video/video-info.c: * gst-libs/gst/video/video-tile.h: * tests/check/elements/videoscale.c: * tests/check/libs/video.c: video: Add NV12_16L32S aka Mediatek MM21 support Unlike other simple tiled formats, the Mediatek HW use different tile size per-plane. The tile size is scaled according to the subsampling. Effectively, using the name 16L32S to represent linearly layout tiles of size 16x32 bytes in the Y plane, and 16x16 in the UV plane. In order to make this specificity discoverable, a new SUBTILES flags have been added. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1567> 2022-02-19 01:58:20 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/video/gstvideoaggregator.c: videoaggregator: Use floor() to calculate current position ... instead of round(). Depending on framerate, calculated position may not be clearly represented by using uint64, 30000/1001 for example. Then the result of round() can be sliglhtly larger (1ns) than buffer timestamp. And that will cause unnecessary frame delay. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1747> 2021-10-28 17:09:34 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst-libs/gst/audio/gstaudioencoder.c: base: audioencoder: Keep serialize event behind buffers If a serialized event arrives behind a buffer, it should not be send before it. This fixes the pending event handling so that only early pending events, the one that arrrived or was generated while the adapter was empty get send before pushing buffer. All other events are not pushed after. This issue lead the latency tracer to think our audio encoder did not have any latency. This was testing with opusenc in a live pipeline. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1266> 2022-02-06 22:54:42 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/pbutils/missing-plugins.c: gstinfo,ptpclock,libcheck: Use GetCurrentProcessId() instead of getpid() on Windows getpid() shouldn't be used in case of UWP. Use GetCurrentProcessId() instead which provides exactly the same functionality and can be used with UWP as well. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1006> 2021-10-01 20:27:28 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/gl/winrt/gstglwindow_winrt_egl.cpp: * meson.build: * tests/examples/seek/instant-rate-change.c: meson: Do hard build error for some MSVC warnings Handle various MSVC warnings as errors for development version. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1006> 2022-02-08 23:30:00 +0900 Seungha Yang <seungha@centricular.com> * tests/examples/seek/instant-rate-change.c: Remove some trailing white spaces Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1006> 2022-01-07 20:02:46 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/video/gstvideoaggregator.c: * tests/check/elements/compositor.c: videoaggregator: Fix for unhandled negative rate Nagative rates have been considered only in gst_video_aggregator_advance_on_timeout(). Update other places to fix broken reverse playback. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1500> 2021-08-25 20:18:20 +0900 Seungha Yang <seungha@centricular.com> * gst/typefind/gsttypefindfunctions.c: * tests/check/gst/typefindfunctions.c: typefindfunctions: Fix WebVTT format detection If WebVTT file consists of "WebVTT" header without body, the file size can be smaller than 10 bytes. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1359> 2022-01-31 13:01:10 +0100 Vivienne Watermeier <vwatermeier@igalia.com> * gst-libs/gst/video/navigation.c: * gst-libs/gst/video/navigation.h: navigation: add more constructors for navigation events Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1610> 2022-02-07 09:30:58 +0100 David Svensson Fors <davidsf@axis.com> * gst-libs/gst/pbutils/codec-utils.c: codec-utils: Avoid out-of-bounds error For artificial input (in unit tests), all six bytes of constraint_indicator_flags in hevc_caps_get_mime_codec() can be zero. Add a guard against an out-of-bounds error that occurred in that case. Change variables to signed int so comparison with -1 works. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1677> 2020-07-17 14:37:14 +1000 Jan Schmidt <jan@centricular.com> * gst/videotestsrc/gstvideotestsrc.c: * gst/videotestsrc/gstvideotestsrc.h: videotestsrc: Don't re-render every frame when it's not needed. When the pattern being rendered by videotestsrc doesn't have motion, cache a rendered buffer and output it repeatedly with updated metadata. Based on a patch by Edward Hervey <edward@centricular.com> Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/10 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1293> 2021-12-22 18:46:44 +0000 Thibault Saunier <tsaunier@igalia.com> * gst-libs/gst/video/navigation.h: navigation: Fix Since marker for mouse scroll Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1665> 2022-02-03 01:04:40 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/video/video-color.c: video-color: Fix for missing clipping in PQ EOTF function * Add missing clipping in EOTF * Use pre-calculated values * Update variable names to specification's defined ones Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1629> 2022-02-04 11:15:47 +0000 Tim-Philipp Müller <tim@centricular.com> * meson.build: Back to development Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1635> === release 1.20.0 ===
Generated by dwww version 1.15 on Sat Jun 15 19:27:21 CEST 2024.