From c376d80e9b7982118b4e13ffaa6e391da114124e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= Date: Tue, 4 Oct 2022 01:13:59 +0100 Subject: [PATCH] Update ChangeLogs for 1.21.1 --- subprojects/gst-devtools/ChangeLog | 445 + subprojects/gst-editing-services/ChangeLog | 265 + subprojects/gst-libav/ChangeLog | 185 + subprojects/gst-omx/ChangeLog | 100 + subprojects/gst-plugins-bad/ChangeLog | 8845 ++++++++++++++++++++ subprojects/gst-plugins-base/ChangeLog | 2821 +++++++ subprojects/gst-plugins-good/ChangeLog | 3641 ++++++++ subprojects/gst-plugins-ugly/ChangeLog | 234 + subprojects/gst-python/ChangeLog | 170 + subprojects/gst-rtsp-server/ChangeLog | 267 + subprojects/gstreamer-vaapi/ChangeLog | 247 + subprojects/gstreamer/ChangeLog | 1303 +++ 12 files changed, 18523 insertions(+) diff --git a/subprojects/gst-devtools/ChangeLog b/subprojects/gst-devtools/ChangeLog index 1f39b5da86..7acc1fb1ca 100644 --- a/subprojects/gst-devtools/ChangeLog +++ b/subprojects/gst-devtools/ChangeLog @@ -1,7 +1,452 @@ +2022-09-21 19:19:45 +0530 Nirbheek Chauhan + + * 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: + +2022-09-14 15:45:28 -0300 Thibault Saunier + + * validate/gst/validate/gst-validate-scenario.c: + validate:scenario: Make appsrc-push push a sample + Allowing setting a segment to the sample + Part-of: + +2022-09-14 15:36:41 -0300 Thibault Saunier + + * docs/gst-validate-action-types.md: + * validate/gst/validate/gst-validate-scenario.c: + validate: Handle buffer pts/dts/duration in the appsrc-push action + Part-of: + +2022-09-14 15:31:20 -0300 Thibault Saunier + + * validate/gst/validate/gst-validate-scenario.c: + validate:scenario: Simplify the way we override appsrc src pad chain + When pushing several buffers while the pipeline is in NULL state, meaning + that the action are executed "interlaced", previous code was deadlocking. + This new implementation makes it so the override is always on and we + expect all buffers to go through to be associated to a function, which + is a safe assumption. + Part-of: + +2022-09-08 18:25:07 -0400 Thibault Saunier + + * validate/gst/validate/gst-validate-scenario.c: + validate:scenario: Fix a leak when done waiting for an ASYNC action + Part-of: + +2022-09-12 09:46:43 -0400 Xavier Claessens + + * validate/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: + +2022-09-16 22:05:18 -0300 Thibault Saunier + + * docs/gst-validate-action-types.md: + * validate/gst/validate/gst-validate-scenario.c: + validate: Update action types documentation + Part-of: + +2021-03-24 14:20:18 -0500 Zebediah Figura + + * 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: + +2022-09-07 15:43:11 -0400 Thibault Saunier + + * validate/gst/validate/gst-validate-scenario.c: + validate:scenario: Some minor fixes + Part-of: + +2022-09-07 15:41:53 -0400 Thibault Saunier + + * validate/gst/validate/gst-validate-scenario.c: + validate: Add a 'check-current-pad-caps' check action type + Allowing to check that a specific pad has some specific caps set + Part-of: + +2022-09-07 15:19:05 -0400 Thibault Saunier + + * validate/gst/validate/gst-validate-scenario.c: + * validate/gst/validate/gst-validate-scenario.h: + validate: Add a 'check' field to waits to allow running check actions after it get executed + Adding the notion of 'check' action types + Part-of: + +2022-09-01 15:11:31 -0400 Thibault Saunier + + * meson.build: + * validate/gst/validate/meson.build: + meson: Call pkgconfig.generate in the loop where we declare plugins dependencies + Removing some copy pasted code + Part-of: + +2022-09-01 11:51:48 -0400 Thibault Saunier + + * meson.build: + * validate/gst/validate/meson.build: + meson: Namespace the plugins_doc_dep/libraries variables + Part-of: + +2022-08-31 18:44:14 -0400 Thibault Saunier + + * meson.build: + meson: Rename plugins list and make them "dependency" objects + Part-of: + +2022-08-31 10:31:40 -0400 Thibault Saunier + + * validate/gst/validate/meson.build: + validate: Fix gir generation + It broke in https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2555 + where we stopped parsing some .c files + Part-of: + +2022-08-04 21:12:08 +0300 Jordan Petridis + + * validate/launcher/baseclasses.py: + validate: don't look for the common supression file + We no longer have a common submodule + Part-of: + +2022-08-05 20:16:00 +0900 Seungha Yang + + * validate/launcher/testsuites/check.py: + 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: + +2022-06-29 10:55:13 +0100 Tim-Philipp Müller + + * 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: + +2022-04-06 12:56:30 +0100 Tim-Philipp Müller + + * meson.build: + * validate/gst/validate/validate.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: + +2022-05-30 14:00:55 -0400 Thibault Saunier + + * validate/gst/validate/meson.build: + validate: Fix running as a tracer + We need to rebuild runner.c as this is where the plugin is defined + Part-of: + +2022-04-21 10:38:24 -0400 Thibault Saunier + + * validate/launcher/baseclasses.py: + validate: Do not print Known error tests + Those are passing tests in practice and it doesn't give any useful information + Part-of: + +2022-04-19 18:38:12 -0400 Thibault Saunier + + * validate/gst/validate/gst-validate-pipeline-monitor.c: + validate:pipeline-monitor: Minor cleanup setting unused variable + Part-of: + +2022-04-14 09:48:14 -0400 Thibault Saunier + + * validate/launcher/testsuites/check.py: + videoconvertscale: Add properties to disable scaling/converting in videoconvert/videoscale + Part-of: + +2022-04-14 09:09:35 -0400 Thibault Saunier + + * validate/gst/validate/gst-validate-scenario.c: + * validate/tools/gst-validate.c: + validate: scenario: Add a 'allow-error' configuration + This new configuration allows the scenario to keep running even + after receiving an "error" message on the bus. + Part-of: + +2022-03-25 10:20:24 -0400 Xavier Claessens + + * validate/gst/validate/gettext.h: + Delete unused i18n headers + Part-of: + +2022-04-01 21:47:59 +0800 Haihua Hu + + * validate/launcher/baseclasses.py: + ximagesink/xvimagesink: use GST_XINITTHREADS to ensure call to XInitThreads + Part-of: + +2022-03-30 11:06:02 -0400 Xavier Claessens + + * 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: + +2022-03-25 15:00:20 -0400 Xavier Claessens + + * meson.build: + * validate/gst-libs/gst/video/meson.build: + * validate/gst/validate/meson.build: + * validate/plugins/fault_injection/meson.build: + * validate/plugins/gapplication/meson.build: + * validate/plugins/gtk/meson.build: + * validate/plugins/ssim/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: + +2021-09-11 12:17:56 -0300 Thibault Saunier + + * meson_options.txt: + * validate/tools/meson.build: + tools: Add support for building gstreamer tools against gst-full + Part-of: + +2022-03-28 21:15:15 +1100 Matthew Waters + + * validate/gst/validate/gst-validate-media-info.c: + validate/media-info: silence unsed variable warning + Fixes: + ../validate/gst/validate/gst-validate-media-info.c:714:28: error: variable 'total_sink_count' set but not used [-Werror,-Wunused-but-set-variable] + guint id, ncounters = 0, total_sink_count = 0; + ^ + Part-of: + +2022-01-04 14:53:06 -0300 Thibault Saunier + + * validate/gst/validate/gst-validate-scenario.c: + validate:scenario: Support args in the `emit-signal` action + This was never needed before but it is generally useful and there + was a todo about it + Part-of: + +2022-03-18 09:07:48 -0300 Thibault Saunier + + * validate/gst/validate/gst-validate-internal.h: + * validate/gst/validate/media-descriptor-parser.c: + * validate/gst/validate/media-descriptor-writer.c: + * validate/gst/validate/media-descriptor.c: + * validate/gst/validate/media-descriptor.h: + validate: Totally hide media descriptor node types from the API + Part-of: + +2022-03-18 13:42:27 +0530 Nirbheek Chauhan + + * 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: + +2022-03-07 17:21:48 -0300 Thibault Saunier + + * validate/gst-libs/gst/video/gssim.h: + * validate/gst-libs/gst/video/gstvalidatessim.h: + * validate/gst/validate/gst-validate-bin-monitor.h: + * validate/gst/validate/gst-validate-element-monitor.h: + * validate/gst/validate/gst-validate-internal.h: + * validate/gst/validate/gst-validate-media-info.h: + * validate/gst/validate/gst-validate-mockdecryptor.h: + * validate/gst/validate/gst-validate-monitor.h: + * validate/gst/validate/gst-validate-override-registry.h: + * validate/gst/validate/gst-validate-override.h: + * validate/gst/validate/gst-validate-pad-monitor.h: + * validate/gst/validate/gst-validate-pipeline-monitor.h: + * validate/gst/validate/gst-validate-report.h: + * validate/gst/validate/gst-validate-reporter.h: + * validate/gst/validate/gst-validate-runner.h: + * validate/gst/validate/gst-validate-scenario.h: + * validate/gst/validate/media-descriptor-parser.c: + * validate/gst/validate/media-descriptor-parser.h: + * validate/gst/validate/media-descriptor-writer.c: + * validate/gst/validate/media-descriptor-writer.h: + * validate/gst/validate/media-descriptor.c: + * validate/gst/validate/media-descriptor.h: + validate: Cleanup ABI and make it ready to be stabilized this cycle + Part-of: + +2022-03-07 16:29:19 -0300 Thibault Saunier + + * validate/gst/validate/meson.build: + validate: Introspect gst-validate-runner.c + Part-of: + +2022-03-02 22:21:40 -0300 Thibault Saunier + + * validate/gst/validate/gst-validate-report.c: + * validate/gst/validate/gst-validate-report.h: + * validate/gst/validate/gst-validate-runner.c: + validate: Add getters for ValidateReports + Part-of: + +2022-03-02 12:52:37 +0000 Philippe Normand + + * validate/gst/validate/gst-validate-override.c: + * validate/gst/validate/gst-validate-report.c: + * validate/gst/validate/gst-validate-report.h: + * validate/gst/validate/gst-validate-reporter.c: + * validate/gst/validate/gst-validate-runner.c: + validate: Change IssueId type to guint32 + Which is a bit more bindings-friendly. + Part-of: + +2022-03-02 10:54:17 +0000 Philippe Normand + + * validate/plugins/ssim/gstvalidatessim.c: + validate: ssim: Respect requested dump recurrence parameter + Part-of: + +2022-03-02 10:27:10 +0000 Philippe Normand + + * validate/gst/validate/gst-validate-scenario.c: + validate: Keep scenario alive enough when executing actions + Part-of: + +2022-03-02 13:11:43 +0000 Philippe Normand + + * validate/gst/validate/gst-validate-bin-monitor.c: + * validate/gst/validate/gst-validate-element-monitor.c: + * validate/gst/validate/gst-validate-monitor.c: + * validate/gst/validate/gst-validate-pad-monitor.c: + * validate/gst/validate/gst-validate-pad-monitor.h: + * validate/gst/validate/gst-validate-pipeline-monitor.c: + * validate/gst/validate/gst-validate-report.c: + * validate/gst/validate/gst-validate-reporter.c: + * validate/gst/validate/gst-validate-runner.c: + * validate/gst/validate/media-descriptor.h: + validate: Introspection annotation cleanups + Part-of: + +2022-02-28 10:58:41 +0000 Philippe Normand + + * validate/gst/validate/gst-validate-scenario.h: + * validate/gst/validate/media-descriptor.h: + validate: Fix padding and constants + Without this the Rust -sys validate crate tests don't pass. + Part-of: + +2022-02-28 10:57:55 +0000 Philippe Normand + + * validate/gst/validate/validate.h: + validate: Expose all public headers in main header + Part-of: + +2022-02-28 10:56:59 +0000 Philippe Normand + + * validate/gst/validate/meson.build: + validate: Fix pkgconfig name + Making it consistent with the reset of GStreamer. This also means that + anyone wanting to target -validate >= 1.22 needs to change the way they + link against it. + Part-of: + +2022-03-15 13:57:11 +0100 Corentin Noël + + * validate/gst/validate/gst-validate-runner.c: + validate: Fix typo in get_reports + Return without s isn't taken into account for the introspection. + Part-of: + +2022-02-21 10:49:15 +0100 Sebastian Fricke + + * debug-viewer/GstDebugViewer/Common/Main.py: + * debug-viewer/gst-debug-viewer: + * validate/gst/validate/gst-validate-scenario.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: + +2022-02-17 15:25:21 +0100 Sebastian Fricke + + * docs/gst-validate-environment-variables.md: + Add documentation for GST_VALIDATE_APPS_DIR + Add documentation for the environment variable, explaining what it is + used for and the default search locations. + Fixes: 4d569b51ed2 add a way to specify an application directory. + Part-of: + +2022-02-17 11:35:49 +0100 Sebastian Fricke + + * docs/gst-validate-environment-variables.md: + Improve environment variable documentation + At GST_VALIDATE_FILE: + s/will be outputed/are output/ + Part-of: + +2022-02-17 11:32:14 +0100 Sebastian Fricke + + * docs/gst-validate-environment-variables.md: + Add documentation for GST_VALIDATE_PLUGIN_PATH + Add documentation for the environment variable, explaining what it is + used for and the default search locations. + Fixes: 83d6978f80 Implement fault_injection as a Gs(tValidate)Plugin + Part-of: + +2022-02-21 11:37:26 -0500 Xavier Claessens + + * validate/data/scenarios/meson.build: + devenv: Add some missing GStreamer specific env variables + This should make "meson devenv" closer to what "gst-env.py" sets. + - GST_VALIDATE_SCENARIOS_PATH + - GST_VALIDATE_APPS_DIR + - GST_OMX_CONFIG_DIR + - GST_ENCODING_TARGET_PATH + - GST_PRESET_PATH + - GST_PLUGIN_SCANNER + - GST_PTP_HELPER + - _GI_OVERRIDES_PATH + Part-of: + +2022-02-04 11:15:47 +0000 Tim-Philipp Müller + + * meson.build: + Back to development + Part-of: + === release 1.20.0 === 2022-02-03 19:53:25 +0000 Tim-Philipp Müller + * ChangeLog: * NEWS: * RELEASE: * gst-devtools.doap: diff --git a/subprojects/gst-editing-services/ChangeLog b/subprojects/gst-editing-services/ChangeLog index e96a1aca41..1c7021b2c6 100644 --- a/subprojects/gst-editing-services/ChangeLog +++ b/subprojects/gst-editing-services/ChangeLog @@ -1,7 +1,272 @@ +2022-09-21 19:19:45 +0530 Nirbheek Chauhan + + * 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: + +2022-09-08 11:38:34 -0400 Thibault Saunier + + * ges/ges-video-source.c: + ges-video-source: Remove limit on frame duplication on EOS in videorate + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1352 + Part-of: + +2022-09-06 17:24:51 -0400 Thibault Saunier + + * plugins/nle/nlecomposition.c: + nlecomposition: Minor debug enhancement + Part-of: + +2022-09-06 17:24:22 -0400 Thibault Saunier + + * ges/ges-video-source.c: + ges: Enhance element names in video uri sources + Part-of: + +2022-08-29 10:17:45 -0400 Thibault Saunier + + * docs/meson.build: + doc: Do not build plugins to build the doc + It is not actually necessary + Part-of: + +2021-03-24 14:20:18 -0500 Zebediah Figura + + * 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: + +2022-09-10 19:16:39 +0200 Christoph Reiter + + * meson.build: + meson: use python.get_install_dir() to find the pygobject overrides dir + Instead of trying to hardcode site-packages paths for different platforms + just use python.get_install_dir() from meson and let it deal with the rest. + Also no longer try to import pygobject, which would otherwise not be + required at build time. + python.get_install_dir() was at the beginning broken on Windows, but + that was fixed in 0.60 via https://github.com/mesonbuild/meson/pull/9156 + and since ges now requires >0.60 this can be ignored. + This change was motivated by the install path being wrong under MSYS2, where + the unix install layout is used and the detection code not taking that into + account. + This MR is a continuation of https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/230 + see the discussion there for extra context. + Part-of: + +2022-09-01 15:11:31 -0400 Thibault Saunier + + * meson.build: + * plugins/ges/meson.build: + * plugins/nle/meson.build: + meson: Call pkgconfig.generate in the loop where we declare plugins dependencies + Removing some copy pasted code + Part-of: + +2022-09-01 11:51:48 -0400 Thibault Saunier + + * docs/meson.build: + * ges/meson.build: + * meson.build: + meson: Namespace the plugins_doc_dep/libraries variables + Part-of: + +2022-08-31 18:44:14 -0400 Thibault Saunier + + * meson.build: + meson: Rename plugins list and make them "dependency" objects + Part-of: + +2022-08-02 06:54:38 +0900 Seungha Yang + + * ges/ges-utils.c: + ges: Update outdated comment + d3d11compositor is a videoaggregator subclass and no more wrapper bin + since the MR + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2631 + Part-of: + +2022-01-22 02:24:23 +0100 Mathieu Duponchelle + + * ges/ges-clip.c: + * ges/ges-container.c: + * ges/ges-uri-clip.c: + * tests/check/ges/clip.c: + ges: preserve discovery order + The previous code was storing container children in reverse + addition order, this was mitigated by the fact that track elements + were also stored in reverse order, thus restoring the original + order, but it seems more consistent to preserve order throughout, + the extra cost of append operations is negligible. + Part-of: + +2022-06-29 10:55:13 +0100 Tim-Philipp Müller + + * 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: + +2022-06-16 22:40:21 +0200 Mathieu Duponchelle + + * ges/gstframepositioner.c: + ges/gstframepositioner: don't create one compositor per frame meta + Instead, cache the looked up operator property + Part-of: + +2022-04-06 12:56:30 +0100 Tim-Philipp Müller + + * meson.build: + Bump GLib requirement to >= 2.62 + Can't require 2.64 yet because of + https://gitlab.freedesktop.org/gstreamer/cerbero/-/issues/323 + Part-of: + +2022-05-13 10:23:54 +1000 Matthew Waters + + * ges/ges-video-uri-source.c: + ges/videourisource: handle non-1/1 PAR source videos + The automatic scaling done by framepositioner does not account for the + par of the video source. + Part-of: + +2022-05-06 12:17:14 +0300 George Kiagiadakis + + * ges/ges-enums.c: + * ges/ges-enums.h: + * ges/ges-video-transition.c: + ges-video-transition: add a new "fade-in" transition type + This transition is meant to be very similar to crossfade, but + instead of fading out the background video at the same time as the + foreground fades in, the background video stays at 100% opacity + during the whole transition. + This essentially "restores" the old crossfade behaviour that was changed in: + https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/commit/eb48faf34234811faec1699692a2c096daaceefd + but using a new type enum, so that both behaviours are available, + letting applications choose. + Part-of: + +2022-03-30 11:06:02 -0400 Xavier Claessens + + * 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: + +2022-03-25 15:00:20 -0400 Xavier Claessens + + * 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: + +2022-03-31 12:49:48 +0200 Xabier Rodriguez Calvar + + * ges/ges-smart-video-mixer.c: + * ges/ges-smart-video-mixer.h: + ges-smart-video-mixer: use the proper pad to get the positioner meta + Part-of: + +2021-09-11 12:17:56 -0300 Thibault Saunier + + * meson.build: + * tools/meson.build: + tools: Add support for building gstreamer tools against gst-full + Part-of: + +2022-03-28 13:47:52 +0200 Stéphane Cerveau + + * tools/utils.c: + ges: remove memory leak with description + free the capsdesc + Part-of: + +2022-03-28 13:20:40 +0200 Stéphane Cerveau + + * plugins/nle/nlecomposition.c: + nle: clear seek event properly + Use gst_clear_event instead of g_clear_object + avoiding a failing gobject unref + Part-of: + +2022-03-14 09:06:46 -0300 Thibault Saunier + + * bindings/python/gi/overrides/GES.py: + * bindings/python/gi/overrides/__init__.py: + * ges/ges-timeline-element.c: + * ges/ges-timeline-element.h: + Fix license as GES is released under the LGPL2+ license + This was a mistake that some of the licensing notice in a few files was + referring to GPL3+ and it needs fixing + Part-of: + +2022-03-18 13:42:27 +0530 Nirbheek Chauhan + + * 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: + +2022-02-21 11:37:26 -0500 Xavier Claessens + + * bindings/python/meson.build: + * tests/validate/meson.build: + devenv: Add some missing GStreamer specific env variables + This should make "meson devenv" closer to what "gst-env.py" sets. + - GST_VALIDATE_SCENARIOS_PATH + - GST_VALIDATE_APPS_DIR + - GST_OMX_CONFIG_DIR + - GST_ENCODING_TARGET_PATH + - GST_PRESET_PATH + - GST_PLUGIN_SCANNER + - GST_PTP_HELPER + - _GI_OVERRIDES_PATH + Part-of: + +2022-02-19 03:26:00 +0900 Seungha Yang + + * tests/check/scenarios/complex_effect_bin_desc/flow-expectations/log-videosink-sink-expected: + * tests/check/scenarios/seek_with_stop/flow-expectations/log-videosink-sink-expected: + scenarios: Update for videoaggregator rounding behavior change + Part-of: + +2022-02-10 10:13:27 +0100 Stéphane Cerveau + + * meson.build: + ges: add missing plugin summary + Part-of: + +2022-02-04 11:15:47 +0000 Tim-Philipp Müller + + * meson.build: + Back to development + Part-of: + === release 1.20.0 === 2022-02-03 19:53:25 +0000 Tim-Philipp Müller + * ChangeLog: * NEWS: * RELEASE: * gst-editing-services.doap: diff --git a/subprojects/gst-libav/ChangeLog b/subprojects/gst-libav/ChangeLog index 75f50d3161..ed6c0940fb 100644 --- a/subprojects/gst-libav/ChangeLog +++ b/subprojects/gst-libav/ChangeLog @@ -1,7 +1,192 @@ +2022-09-29 12:42:21 +0100 Tim-Philipp Müller + + * ext/libav/gstavauddec.c: + avauddec: fix unnecessary reconfiguration if the audio layout isn't specified + It would constantly want to renegotiate (and spam the debug log) even + though the channel layout hasn't actually changed. We use the same + fallback in gst_ffmpegauddec_negotiate() already. + This happens with WMA files for example. + Part-of: + +2022-09-21 19:19:45 +0530 Nirbheek Chauhan + + * 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: + +2022-08-26 08:43:34 -0400 Thibault Saunier + + * docs/gst_plugins_cache.json: + Build documentation for rust plugins + - Update the docker image we use, starting using the standard one adding + `gtk4-doc` as required by rust plugins + - Update the plugins_doc_caches as required, some more plugins are built + with the new image + - Install ninja from pip as the version from F31 is too old + - Avoid buildings all GSreamer plugins when building the doc as it takes + time and resources for no good reason + - Stop linking to `GInstanceInitFunc` as it is not present in latest GLib + documentation, leading to warnings in hotdoc. + Part-of: + +2022-08-29 10:17:45 -0400 Thibault Saunier + + * docs/meson.build: + doc: Do not build plugins to build the doc + It is not actually necessary + Part-of: + +2021-03-24 14:20:18 -0500 Zebediah Figura + + * 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: + +2022-09-01 15:11:31 -0400 Thibault Saunier + + * ext/libav/meson.build: + meson: Call pkgconfig.generate in the loop where we declare plugins dependencies + Removing some copy pasted code + Part-of: + +2022-09-01 11:51:48 -0400 Thibault Saunier + + * docs/meson.build: + meson: Namespace the plugins_doc_dep/libraries variables + Part-of: + +2022-08-31 18:44:14 -0400 Thibault Saunier + + * meson.build: + meson: Rename plugins list and make them "dependency" objects + Part-of: + +2022-05-31 15:18:03 +0200 Stéphane Cerveau + + * docs/meson.build: + * meson.build: + docs: disable in static build + Following gst-plugins-base, disable docs if static_build + in: + - gstreamer + - gst-plugins-good + - gst-plugins-ugly + - gst-libav + - gstreamer-vaapi + Part-of: + +2022-07-07 22:16:30 +0900 Seungha Yang + + * ext/libav/gstavcfg.c: + libav: Fix for APNG encoder property registration + The AVClass name of Animated PNG in FFmpeg 5.x is "(A)PNG" + and it will be converted to "-a-png" through + g_ascii_strdown() and g_strcanon(). But GLib disallow leading '-' + character for a GType name. Strip leading '-' to workaround it. + Part-of: + +2022-06-29 10:55:13 +0100 Tim-Philipp Müller + + * 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: + +2022-06-08 19:18:48 +0300 Vivia Nikolaidou + + * ext/libav/gstavviddec.c: + 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: + +2022-04-15 16:38:46 +0200 Guillaume Desmottes + + * ext/libav/gstavviddec.c: + libav: fix frame leak on negotiation error + The function owns a reference on the frame. Drop it if negotiation + failed as we are already doing for the other error cases. + Part-of: + +2022-04-04 23:32:56 +0200 Fabrice Fontaine + + * meson.build: + gst-libav: fix build on systems without C++ compiler + Fix the following build failure on systems without C++ compiler: + The following exception(s) were encountered: + Running "/nvmedata/autobuild/instance-9/output-1/host/bin/or1k-buildroot-linux-musl-g++ --version" gave "[Errno 2] No such file or directory: '/nvmedata/autobuild/instance-9/output-1/host/bin/or1k-buildroot-linux-musl-g++'" + Fixes: + - http://autobuild.buildroot.org/results/8ac0ba5eaaf7571857b4d8cfabf1488d640dc59a + Part-of: + +2022-03-29 09:36:06 +0200 Edward Hervey + + * ext/libav/gstavviddec.c: + avviddec: Remove vc1/wmv3 override + FFMPEG 5+ doesn't allow overriding the codec anymore (causes a segfault if you + attempt to do that). But the best part is ... that with the current caps + implementation in pad template and gst_ffmpeg_caps_to_codecid() we would never + replace it by anything different than the existing codec id. + Fixes #1054 + Part-of: + +2022-03-18 13:42:27 +0530 Nirbheek Chauhan + + * 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: + +2021-10-05 13:43:50 +0300 Sebastian Dröge + + * ext/libav/gstavaudenc.c: + avaudenc: Add support for AV_PKT_DATA_SKIP_SAMPLES side data + Part-of: + +2019-09-10 17:30:07 +0200 Carlos Rafael Giani + + * ext/libav/gstavauddec.c: + avauddec: Add clipping meta support for gapless playback + Co-authored-by: Sebastian Dröge + Part-of: + +2021-10-01 20:27:28 +0900 Seungha Yang + + * meson.build: + meson: Do hard build error for some MSVC warnings + Handle various MSVC warnings as errors for development version. + Part-of: + +2022-02-04 11:15:47 +0000 Tim-Philipp Müller + + * meson.build: + Back to development + Part-of: + === release 1.20.0 === 2022-02-03 19:53:25 +0000 Tim-Philipp Müller + * ChangeLog: * NEWS: * RELEASE: * gst-libav.doap: diff --git a/subprojects/gst-omx/ChangeLog b/subprojects/gst-omx/ChangeLog index d3f9e5aaa5..b571f0bd42 100644 --- a/subprojects/gst-omx/ChangeLog +++ b/subprojects/gst-omx/ChangeLog @@ -1,7 +1,107 @@ +2022-09-21 19:19:45 +0530 Nirbheek Chauhan + + * 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: + +2021-03-24 14:20:18 -0500 Zebediah Figura + + * 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: + +2022-09-01 11:51:48 -0400 Thibault Saunier + + * docs/meson.build: + meson: Namespace the plugins_doc_dep/libraries variables + Part-of: + +2022-06-29 10:55:13 +0100 Tim-Philipp Müller + + * 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: + +2022-04-06 12:56:30 +0100 Tim-Philipp Müller + + * meson.build: + Bump GLib requirement to >= 2.62 + Can't require 2.64 yet because of + https://gitlab.freedesktop.org/gstreamer/cerbero/-/issues/323 + Part-of: + +2022-03-30 11:06:02 -0400 Xavier Claessens + + * 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: + +2022-03-25 15:00:20 -0400 Xavier Claessens + + * meson.build: + * omx/meson.build: + * tests/check/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: + +2022-03-18 13:42:27 +0530 Nirbheek Chauhan + + * 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: + +2022-02-21 11:37:26 -0500 Xavier Claessens + + * config/meson.build: + * meson.build: + devenv: Add some missing GStreamer specific env variables + This should make "meson devenv" closer to what "gst-env.py" sets. + - GST_VALIDATE_SCENARIOS_PATH + - GST_VALIDATE_APPS_DIR + - GST_OMX_CONFIG_DIR + - GST_ENCODING_TARGET_PATH + - GST_PRESET_PATH + - GST_PLUGIN_SCANNER + - GST_PTP_HELPER + - _GI_OVERRIDES_PATH + Part-of: + +2022-02-04 11:15:47 +0000 Tim-Philipp Müller + + * meson.build: + Back to development + Part-of: + === release 1.20.0 === 2022-02-03 19:53:25 +0000 Tim-Philipp Müller + * ChangeLog: * NEWS: * RELEASE: * gst-omx.doap: diff --git a/subprojects/gst-plugins-bad/ChangeLog b/subprojects/gst-plugins-bad/ChangeLog index f2b3ccd3ef..78e182de0e 100644 --- a/subprojects/gst-plugins-bad/ChangeLog +++ b/subprojects/gst-plugins-bad/ChangeLog @@ -1,7 +1,8852 @@ +2022-09-29 14:34:31 +0300 Sebastian Dröge + + * gst/gaudieffects/gstgaussblur.c: + gaussblur: Fix memory leak when setting caps multiple times + Part-of: + +2022-09-27 18:17:24 +0100 Christopher Obbard + + * sys/v4l2codecs/gstv4l2codecdevice.c: + v4l2codecs: Warn user when no media devices are found + Currently if the user is not able to access the devices under /dev/media*, + either due to no media devices present on the system or simply no permission + to access the device, v4l2codecs initialises with no features or debug messages. + Since calling `GST_DEBUG="v4l2*:7" gst-inspect-1.0 v4l2codecs` is a typical way + to diagnose why element(s) failed to enumerate, we should be more verbose here + when the user is not able to access any /dev/media* device. So print a simple + debug message in this case to aid debugging. + Part-of: + +2022-09-20 23:31:45 +0300 Mart Raudsepp + + * gst/mpegtsdemux/mpegtsbase.c: + tsdemux: Don't trigger a program change when falling back to ignore-pcr behaviour + Since commit a79a756b79aa1675e we could change to ignore-pcr automatically at 500ms + into a live stream when no PCR is seen by then. However the stream counting in + program change detection was wrongly considering ignore-pcr programs to have a + separate PCR PID, even though we are actually ignoring the PCR PID completely, + resulting in an erroneous program switch getting triggered from the different + stream count. This in turn would send an EOS and switch out the pads for what + actually is still the same program, while we intended to simply apply a + workaround for broken encoders. + Part-of: + +2022-09-27 19:46:28 +0530 Nirbheek Chauhan + + * meson.build: + meson: Remove builtin variable datadir from pkgconfig variables + Fixes warning with meson 0.62: + gst-plugins-bad| subprojects/gst-plugins-bad/meson.build:546: WARNING: + Project targets '>= 0.62' but uses feature deprecated since '0.62.0': + pkgconfig.generate variable for builtin directories. They will be + automatically included when referenced + and more. + Part-of: + +2022-09-22 09:14:57 +0530 Nirbheek Chauhan + + * tests/interactive/pitch-test.c: + bad/soundtouch: Fix interactive test build on MSVC + Needed for https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/930 + Part-of: + +2022-09-21 19:19:45 +0530 Nirbheek Chauhan + + * 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: + +2022-09-20 13:38:26 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvabaseenc.c: + vabaseenc: Move out encoder validation from assertion. + Assertion can be disabled at compilation time. Still it's important to + validate it the encoder object was opened by the subclass. This patch + removes the assertion and returns if the encoder is open. + Part-of: + +2022-09-12 09:46:43 -0400 Xavier Claessens + + * 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: + +2022-09-20 16:21:24 +0800 Mengkejiergeli Ba + + * sys/msdk/gstmsdkav1enc.c: + msdkav1enc: We should not set other alignment here + According to spec, we have 32bit alignment for height (progressive) and + 16bit alignment for width, so here we don't need to add other alignment + settings. + Part-of: + +2022-09-17 17:49:47 +0800 He Junyan + + * sys/va/gstvah264enc.c: + va: h264enc: Fix rate control enum register failure for the second GPU. + Part-of: + +2022-09-17 10:14:40 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvah264enc.c: + vah264enc: Avoid precision lost by just rounding up. + The code where dividing by 16 and later multiplying by 16, which is + spurious and a potential loose of precision. + +2022-09-16 14:17:38 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvah264enc.c: + vah264enc: Update AUD property if driver can't handle raw data. + +2022-09-16 13:55:11 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvah264enc.c: + vah264enc: Remove unused dispose method. + +2022-09-16 15:45:11 -0400 Eric Knapp + + * sys/va/gstvadeinterlace.c: + vadeinterlace: Fix passthrough latency query + Part-of: + +2022-09-17 05:01:55 +0900 Seungha Yang + + * sys/nvcodec/gstnvh265dec.c: + nvh265sldec: Sync up with d3d11h265dec implementation + Each RefPicSetStCurrBefore/RefPicSetStCurrAfter/RefPicSetLtCurr array + might have empty element (i.e., reference pictures might not be stored + sequentially). Don't error out for the empty element case, + but instead, iterates each array and fill NVDEC's reference list + as much as possible + Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1441 + Part-of: + +2022-09-16 12:50:33 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvabaseenc.c: + * sys/va/gstvabaseenc.h: + * sys/va/gstvah264enc.c: + va: baseenc: Fix gobject style for chained method. + Part-of: + +2022-09-13 23:20:54 +0900 Seungha Yang + + * gst/codectimestamper/gsth264timestamper.c: + * gst/codectimestamper/gsth265timestamper.c: + codectimestamper: Update document + Add more description about those elements + Part-of: + +2022-06-09 22:32:16 +0800 He Junyan + + * sys/va/gstvaav1dec.c: + va: av1dec: user internal buffer pool for non output layers. + The AV1 support multi spatial layers within one TU with different + resolutions, and only the highest spatial layer need to be output. + For example, there are two spatial layer, base level is 800x600 + and higher level is 1920x1080. We need to decode both because the + higher level needs base layer as reference, but we only need to output + 1920x1080 frames here. + The current manner always renegotiates the caps once we detect the + current picture resolution changes, so we renegotiate again and + again between different layers. That's a big waste and has very + low performance. We now only do the renegotiation for the highest + output layer. For other non output layers, we just keep a internal + buffer pool which is big enough to handle the surface allocation. + Part-of: + +2022-05-12 10:12:37 +0800 He Junyan + + * gst-libs/gst/codecs/gstav1decoder.c: + * gst-libs/gst/codecs/gstav1decoder.h: + codecs: av1decoder: Add the highest_spatial_layer field. + As SPEC says, when multi spatial layer exists, we should only output + one frame with the highest spatial id from each TU. We now store the + highest spatial layer information in the base class in order to let + the sub class handle different layers easily. + Part-of: + +2022-09-15 00:52:14 +0000 Devin Anderson + + * ext/voamrwbenc/gstvoamrwbenc.c: + * tests/check/elements/voamrwbenc.c: + * tests/check/meson.build: + voamrwbenc: Fix truncation of audio data at end-of-stream when audio data doesn't align on 20 millisecond frame size. + The AMR-WB codec imposes a fixed 20 millisecond frame size. In its current + form, the `voamrwbenc` plugin deals with this limitation by discarding any + audio at the end of the stream that falls short of 20 milliseconds. This patch + keeps the audio data, and appends silence to the end to preserve frame size + alignment. + The patch also adds tests to check for the updated behavior. I noticed that + tests weren't being built, so I changed the build to allow for building the + tests when the `tests` and `voamrwbenc` options are set. + Part-of: + +2022-09-15 21:56:27 +0900 Seungha Yang + + * gst/codectimestamper/gstcodectimestamper.c: + codectimestamper: Fix for unknown framerate + Use default framerate if numerator or denominator is unknown + Part-of: + +2022-08-26 08:43:34 -0400 Thibault Saunier + + * docs/plugins/gst_plugins_cache.json: + * sys/qsv/plugin.cpp: + Build documentation for rust plugins + - Update the docker image we use, starting using the standard one adding + `gtk4-doc` as required by rust plugins + - Update the plugins_doc_caches as required, some more plugins are built + with the new image + - Install ninja from pip as the version from F31 is too old + - Avoid buildings all GSreamer plugins when building the doc as it takes + time and resources for no good reason + - Stop linking to `GInstanceInitFunc` as it is not present in latest GLib + documentation, leading to warnings in hotdoc. + Part-of: + +2022-08-29 10:17:45 -0400 Thibault Saunier + + * docs/meson.build: + doc: Do not build plugins to build the doc + It is not actually necessary + Part-of: + +2022-09-15 12:14:56 +0100 Tim-Philipp Müller + + * tests/check/meson.build: + tests: add a few more orc tests + Part-of: + +2022-09-14 00:58:37 +0900 Seungha Yang + + * sys/nvcodec/gstnvdec.c: + nvdec: Fix for HEVC decoding when coded resolution is larger than display resolution + As documented in the SDK header, we should set coded width/height + values to the corresponding decoder configuration option, + instead of display resolution + Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1438 + Part-of: + +2022-09-13 04:06:02 +0900 Seungha Yang + + * sys/nvcodec/gstcudamemorycopy.c: + cudaupload,cudadownload: Fix document + * Fix typo, NVIDA -> NVIDIA + * Add cudadownload doc to the source file + Part-of: + +2022-09-13 01:02:55 +0900 Seungha Yang + + * sys/nvcodec/gstcudamemorycopy.c: + cudaupload,cudadownload: Use shared GstD3D11Device context if possible + Handle d3d11 device context in set_context() method with + additional device compatibility check so that only NVIDIA GPU + associated d3d11 device can be configured in the element. + And clear old d3d11 device per set_info() for d3d11 device to be + updated as well. + Part-of: + +2022-09-13 01:02:50 +0900 Seungha Yang + + * gst-libs/gst/cuda/cuda-gst.h: + * gst-libs/gst/cuda/gstcudacontext.c: + * gst-libs/gst/cuda/gstcudaloader.c: + * gst-libs/gst/cuda/gstcudautils.c: + * gst-libs/gst/cuda/gstcudautils.h: + * gst-libs/gst/cuda/meson.build: + * gst-libs/gst/cuda/stub/cuda.h: + * gst-libs/gst/cuda/stub/cudaD3D11.h: + cuda: Remove GST_CUDA_HAS_D3D define from header + ... and fix d3d11 specific enum type name + GST_CUDA_HAS_D3D is a build time define which indicates whether + GstD3D11 library is available or not, but DirectX SDK headers + must be available on the build system already. + Expose Direct3D related symbols if the build target is Windows + (i.e., if G_OS_WIN32 is defined) + Part-of: + +2021-03-24 14:20:18 -0500 Zebediah Figura + + * 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: + +2022-06-06 10:56:12 +0200 Víctor Manuel Jáquez Leal + + * docs/plugins/gst_plugins_cache.json: + va: Remove from plugin cache. + GstVA is not currently build by CI, because libva version is lower + than expected. So, the gstva library is not build, thus some symbols + aren't documented, breaking the documentation CI. + To move things forward, let's just remove temporarly the va plugins + from cache. While we decide on how to update the libva package in + the CI. + Part-of: + +2022-06-27 18:56:01 +0200 Víctor Manuel Jáquez Leal + + * gst-libs/gst/va/gstvaallocator.h: + va: allocator: Fix parameter name to match signature. + Part-of: + +2022-02-07 17:34:57 +0100 Víctor Manuel Jáquez Leal + + * docs/libs/va/index.md: + * docs/libs/va/sitemap.txt: + * gst-libs/gst/va/gstva.h: + * gst-libs/gst/va/gstvaallocator.c: + * gst-libs/gst/va/gstvaallocator.h: + * gst-libs/gst/va/gstvadisplay.c: + * gst-libs/gst/va/gstvapool.c: + * gst-libs/gst/va/gstvasurfacecopy.h: + * gst-libs/gst/va/gstvautils.c: + * gst-libs/gst/va/gstvavideoformat.c: + * gst-libs/gst/va/meson.build: + * sys/va/gstjpegdecoder.c: + * sys/va/gstjpegdecoder.h: + * sys/va/gstvabasetransform.c: + * sys/va/gstvacompositor.c: + * sys/va/gstvafilter.c: + * sys/va/gstvah264enc.c: + va: Complete library and plugin documentation. + Part-of: + +2022-09-13 14:46:37 +0200 Víctor Manuel Jáquez Leal + + * gst-libs/gst/va/gstva.h: + * gst-libs/gst/va/meson.build: + * sys/va/gstvabasedec.c: + * sys/va/gstvacaps.c: + * sys/va/gstvadecoder.c: + * sys/va/gstvadisplay_priv.c: + * sys/va/gstvaencoder.c: + * sys/va/gstvafilter.c: + * sys/va/gstvah264enc.c: + * sys/va/gstvajpegdec.c: + va: Move gstvavideoformat out of library headers. + Since it's no needed for API consumers. Though it can be added later. + Part-of: + +2021-10-03 10:17:00 +0200 Víctor Manuel Jáquez Leal + + * docs/meson.build: + * gst-libs/gst/va/meson.build: + docs: Generate libgstva GI and pkg-config. + Currently libgstva is only exposed internally to gst-plugins-bad. No + headers are installed, no documentation generated, pkgconfig file, + neither gobject-introspection files. + This patch turn on all that. + Part-of: + +2022-05-19 00:44:40 +0900 Seungha Yang + + * docs/plugins/gst_plugins_cache.json: + * gst/codectimestamper/gstcodectimestamper.c: + * gst/codectimestamper/gstcodectimestamper.h: + * gst/codectimestamper/gsth264timestamper.c: + * gst/codectimestamper/gsth264timestamper.h: + * gst/codectimestamper/gsth265timestamper.c: + * gst/codectimestamper/gsth265timestamper.h: + * gst/codectimestamper/meson.build: + * gst/codectimestamper/plugin.c: + * gst/meson.build: + * meson_options.txt: + Add H.264/H.265 timestamp correction element + Adding {h264,h265}timestamper element to correct timestamp of + encoded frames. This initial version supports only DTS + correction based on given PTS and SPS data. + Part-of: + +2022-09-07 11:22:45 -0400 Thibault Saunier + + * gst/debugutils/gsttestsrcbin.c: + * tests/validate/meson.build: + * tests/validate/testsrcbin/caps_spec.validatetest: + * tests/validate/testsrcbin/caps_spec/flow-expectations/log-testsrcbin0-video_src_0-expected: + testsrcbin: Add a way to specify caps for the output of the sources + Part-of: + +2022-09-08 17:29:37 -0400 Thibault Saunier + + * gst/debugutils/gsttestsrcbin.c: + testsrcbin: Plug some leaks + Part-of: + +2020-11-19 18:34:00 -0300 Thibault Saunier + + * docs/plugins/gst_plugins_cache.json: + * gst/debugutils/gsttestsrcbin.c: + testsrcbin: Add an 'expose-sources-async' property + Which allows simluating usual source which require decoding etc in decodebin for example + Part-of: + +2022-09-05 18:32:20 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvajpegdec.c: + vajpegdec: Enhance explanation comment. + Part-of: + +2022-09-06 14:53:41 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvacaps.c: + va: caps: Use G_STMT_START / END + Part-of: + +2022-09-05 16:59:12 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvajpegdec.c: + vajpegdec: Check if driver has internal color conversion. + Part-of: + +2022-09-06 18:49:02 +0200 Mathieu Duponchelle + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: fix picking available payload types + When picking an available payload type, we need to pick one that is + available across all media. + The previous code, when multiple media were present, looked at the first one, + noticed it had pt 96 as the media pt, then simply looked at the next media, + noticed it didn't, and decided 96 was available. + Instead, check if the pt is used by any of the media, if it is, decide + it is not available and go to the next pt. I'm fairly sure that was the + original intent. + Part-of: + +2022-08-03 19:36:11 +0300 Jordan Petridis + + * ext/fluidsynth/gstfluiddec.c: + fluidsynth: correctly version guard methods + We bumped the minimum version to 2.1 but the api we used + wasn't introduced till version 2.2 of fluidsynth + Follow-up to gstreamer/gstreamer!2718 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2718 + Part-of: + +2022-08-21 03:37:40 +1000 Jan Schmidt + + * ext/dash/gstdashdemux.c: + * ext/dash/gstdashdemux.h: + * ext/dash/gstmpdclient.c: + * ext/dash/gstmpdclient.h: + dashdemux: Preserve current representation on live manifest updates + When updating a manifest during live playback, preserve the current + representation for each stream. + During update_fragment_info, if the current representation changed + because it couldn't be matched, trigger a caps change and new + header download. + This reverts commit e0e1db212fd0df2239583b9099fc4361adeded05 + and reapplies "dashdemux: Fix issue when manifest update sets slow start + without passing necessary header & caps changes downstream" with + changes. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/507 + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1729 + Part-of: + +2022-09-02 09:55:20 +0000 Florian Zwoch + + * sys/va/plugin.c: + va: Fix log message when registering H264 encoder. + The log message would report an error for the H264 decoder when + registering failed, but we tried to register the H264 encoder instead. + Part-of: + +2022-07-05 17:14:37 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + * tests/check/elements/webrtcbin.c: + webrtcbin: Allow locked mlines with no caps, as the last ones + Part-of: + +2022-05-16 18:05:25 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + * tests/check/elements/webrtcbin.c: + webrtcbin: Reject creating an offer if a locked mline has no caps + This avoids getting in a bunch of corner cases. We'd have to insert + a "rejected" line from the start as a place-holder to get around this, + but the rest of the code just becomes more complicated, so just + disallow it for now. + Part-of: + +2022-05-16 17:17:13 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/webrtctransceiver.c: + * ext/webrtc/webrtctransceiver.h: + * tests/check/elements/webrtcbin.c: + webrtcbin: Store pending mid to make create-offer idempotent + If the mid is not stored in the transceiver, but it is stored in + last_offer, then a further create-offer call will just ignore that + transceiver. + Also include unit test for ensure it doesn't regress. + Part-of: + +2022-05-26 18:17:16 +0800 Mengkejiergeli Ba + + * sys/msdk/gstmsdkvpp.c: + * sys/msdk/gstmsdkvpp.h: + msdkvpp: Add va memory when fixating src caps + Part-of: + +2022-06-08 12:31:56 +0800 Mengkejiergeli Ba + + * sys/msdk/gstmsdkvpp.c: + * sys/msdk/gstmsdkvpp.h: + msdkvpp : Use va pool at linux path and system pool for windows + We use msdkvpp's own pool to allocate buffers instead of external frame + allocator mfxFrameAllocator. + Part-of: + +2022-05-09 18:34:38 +0800 Mengkejiergeli Ba + + * sys/msdk/gstmsdkallocator.h: + * sys/msdk/gstmsdkallocator_libva.c: + * sys/msdk/gstmsdkvpp.c: + msdkvpp: Import buffer to msdk_surface + If the buffer is not msdk_buffer, we can try to directly import the + attached memory (i.e. va mem and dmabuf mem) by applying the common + uitl function: import_to_msdk_function (). + Here add a flag "from_qdata" in GstMsdkSurface to handle the cropping case, + we should avoid updating the crop values when msdk_surface is from the + memory's qdata, because the crop info from this surface is the already + updated one. + Part-of: + +2022-05-09 18:19:01 +0800 Mengkejiergeli Ba + + * sys/msdk/gstmsdkvpp.c: + msdkvpp: Add va caps at sink and src pad + Part-of: + +2022-08-25 17:28:36 +0800 Mengkejiergeli Ba + + * sys/msdk/gstmsdkenc.c: + msdkenc: Apply common util func to import mem as msdk_surface + Part-of: + +2022-05-27 17:56:33 +0800 Mengkejiergeli Ba + + * sys/msdk/gstmsdkallocator.c: + * sys/msdk/gstmsdkallocator.h: + * sys/msdk/gstmsdkallocator_libva.c: + * sys/msdk/gstmsdkallocator_libva.h: + * sys/msdk/meson.build: + * sys/msdk/msdk.h: + msdk: Add help functions to get mfxFrameSurface1 from GstBuffer and wrap it as GstMsdkSurface + Note that the memory abstraction for system memory is for windows path. + Part-of: + +2022-05-19 19:18:21 +0800 Mengkejiergeli Ba + + * sys/msdk/gstmsdkenc.c: + * sys/msdk/msdk.c: + * sys/msdk/msdk.h: + msdkenc: Use va pool on linux and system pool for windows + Part-of: + +2022-05-19 18:57:50 +0800 Mengkejiergeli Ba + + * sys/msdk/gstmsdkenc.c: + msdkenc: Directly import dmabuf memory as mfx surface + When input buffer is of dmabuf memory but not a msdk buffer (i.e., the + allocator is not msdk_allocator), then we can try to get fd of this mem, + create the corresponding va surface and wrap it as mfx surface. + Part-of: + +2022-04-21 17:27:09 +0800 Mengkejiergeli Ba + + * sys/msdk/gstmsdkenc.c: + msdkenc: Directly import va memory as mfx surface + If input buffer is of va memory, we can directly obtain va surface from + the buffer and wrap it as mfx surface. + Part-of: + +2022-03-03 10:07:19 +0800 Mengkejiergeli Ba + + * sys/msdk/gstmsdk_va.c: + * sys/msdk/gstmsdk_va.h: + * sys/msdk/gstmsdkenc.c: + * sys/msdk/meson.build: + msdk: Use va libs API to get VA surface from buffer + Direct apply gst_va_buffer_get_surface to get VASurface from a buffer, + so remove corresponding functions which are not used. + Part-of: + +2022-09-01 15:11:31 -0400 Thibault Saunier + + * ext/aes/meson.build: + * ext/aom/meson.build: + * ext/assrender/meson.build: + * ext/avtp/meson.build: + * ext/bs2b/meson.build: + * ext/bz2/meson.build: + * ext/chromaprint/meson.build: + * ext/closedcaption/meson.build: + * ext/colormanagement/meson.build: + * ext/curl/meson.build: + * ext/dash/meson.build: + * ext/dc1394/meson.build: + * ext/directfb/meson.build: + * ext/dtls/meson.build: + * ext/dts/meson.build: + * ext/faac/meson.build: + * ext/faad/meson.build: + * ext/fdkaac/meson.build: + * ext/flite/meson.build: + * ext/fluidsynth/meson.build: + * ext/gme/meson.build: + * ext/gs/meson.build: + * ext/gsm/meson.build: + * ext/gtk/meson.build: + * ext/hls/meson.build: + * ext/iqa/meson.build: + * ext/isac/meson.build: + * ext/kate/meson.build: + * ext/ladspa/meson.build: + * ext/ldac/meson.build: + * ext/libde265/meson.build: + * ext/lv2/meson.build: + * ext/mdns/meson.build: + * ext/modplug/meson.build: + * ext/mpeg2enc/meson.build: + * ext/mplex/meson.build: + * ext/musepack/meson.build: + * ext/neon/meson.build: + * ext/onnx/meson.build: + * ext/openal/meson.build: + * ext/openaptx/meson.build: + * ext/opencv/meson.build: + * ext/openexr/meson.build: + * ext/openh264/meson.build: + * ext/openjpeg/meson.build: + * ext/openmpt/meson.build: + * ext/openni2/meson.build: + * ext/opus/meson.build: + * ext/qroverlay/meson.build: + * ext/resindvd/meson.build: + * ext/rsvg/meson.build: + * ext/rtmp/meson.build: + * ext/sbc/meson.build: + * ext/sctp/meson.build: + * ext/smoothstreaming/meson.build: + * ext/sndfile/meson.build: + * ext/soundtouch/meson.build: + * ext/spandsp/meson.build: + * ext/srt/meson.build: + * ext/srtp/meson.build: + * ext/svthevcenc/meson.build: + * ext/teletextdec/meson.build: + * ext/ttml/meson.build: + * ext/voaacenc/meson.build: + * ext/voamrwbenc/meson.build: + * ext/vulkan/meson.build: + * ext/wayland/meson.build: + * ext/webp/meson.build: + * ext/webrtc/meson.build: + * ext/webrtcdsp/meson.build: + * ext/wildmidi/meson.build: + * ext/wpe/meson.build: + * ext/x265/meson.build: + * ext/zbar/meson.build: + * ext/zxing/meson.build: + * gst/accurip/meson.build: + * gst/adpcmdec/meson.build: + * gst/adpcmenc/meson.build: + * gst/aiff/meson.build: + * gst/asfmux/meson.build: + * gst/audiobuffersplit/meson.build: + * gst/audiofxbad/meson.build: + * gst/audiolatency/meson.build: + * gst/audiomixmatrix/meson.build: + * gst/audiovisualizers/meson.build: + * gst/autoconvert/meson.build: + * gst/bayer/meson.build: + * gst/camerabin2/meson.build: + * gst/codecalpha/meson.build: + * gst/coloreffects/meson.build: + * gst/debugutils/meson.build: + * gst/dvbsubenc/meson.build: + * gst/dvbsuboverlay/meson.build: + * gst/dvdspu/meson.build: + * gst/faceoverlay/meson.build: + * gst/festival/meson.build: + * gst/fieldanalysis/meson.build: + * gst/freeverb/meson.build: + * gst/frei0r/meson.build: + * gst/gaudieffects/meson.build: + * gst/gdp/meson.build: + * gst/geometrictransform/meson.build: + * gst/id3tag/meson.build: + * gst/inter/meson.build: + * gst/interlace/meson.build: + * gst/ivfparse/meson.build: + * gst/ivtc/meson.build: + * gst/jp2kdecimator/meson.build: + * gst/jpegformat/meson.build: + * gst/librfb/meson.build: + * gst/midi/meson.build: + * gst/mpegdemux/meson.build: + * gst/mpegpsmux/meson.build: + * gst/mpegtsdemux/meson.build: + * gst/mpegtsmux/meson.build: + * gst/mxf/meson.build: + * gst/netsim/meson.build: + * gst/onvif/meson.build: + * gst/pcapparse/meson.build: + * gst/pnm/meson.build: + * gst/proxy/meson.build: + * gst/rawparse/meson.build: + * gst/removesilence/meson.build: + * gst/rist/meson.build: + * gst/rtmp2/meson.build: + * gst/rtp/meson.build: + * gst/sdp/meson.build: + * gst/segmentclip/meson.build: + * gst/siren/meson.build: + * gst/smooth/meson.build: + * gst/speed/meson.build: + * gst/subenc/meson.build: + * gst/switchbin/meson.build: + * gst/timecode/meson.build: + * gst/transcode/meson.build: + * gst/videofilters/meson.build: + * gst/videoframe_audiolevel/meson.build: + * gst/videoparsers/meson.build: + * gst/videosignal/meson.build: + * gst/vmnc/meson.build: + * gst/y4m/meson.build: + * meson.build: + * sys/amfcodec/meson.build: + * sys/androidmedia/meson.build: + * sys/applemedia/meson.build: + * sys/asio/meson.build: + * sys/bluez/meson.build: + * sys/d3d11/meson.build: + * sys/d3dvideosink/meson.build: + * sys/decklink/meson.build: + * sys/directshow/meson.build: + * sys/directsound/meson.build: + * sys/dvb/meson.build: + * sys/fbdev/meson.build: + * sys/ipcpipeline/meson.build: + * sys/kms/meson.build: + * sys/magicleap/meson.build: + * sys/mediafoundation/meson.build: + * sys/msdk/meson.build: + * sys/nvcodec/meson.build: + * sys/opensles/meson.build: + * sys/qsv/meson.build: + * sys/shm/meson.build: + * sys/tinyalsa/meson.build: + * sys/uvch264/meson.build: + * sys/v4l2codecs/meson.build: + * sys/va/meson.build: + * sys/wasapi/meson.build: + * sys/wasapi2/meson.build: + * sys/wic/meson.build: + * sys/winks/meson.build: + * sys/winscreencap/meson.build: + meson: Call pkgconfig.generate in the loop where we declare plugins dependencies + Removing some copy pasted code + Part-of: + +2022-09-01 11:51:48 -0400 Thibault Saunier + + * docs/meson.build: + * gst-libs/gst/adaptivedemux/meson.build: + * gst-libs/gst/audio/meson.build: + * gst-libs/gst/codecparsers/meson.build: + * gst-libs/gst/codecs/meson.build: + * gst-libs/gst/cuda/meson.build: + * gst-libs/gst/d3d11/meson.build: + * gst-libs/gst/insertbin/meson.build: + * gst-libs/gst/interfaces/meson.build: + * gst-libs/gst/mpegts/meson.build: + * gst-libs/gst/opencv/meson.build: + * gst-libs/gst/play/meson.build: + * gst-libs/gst/player/meson.build: + * gst-libs/gst/sctp/meson.build: + * gst-libs/gst/transcoder/meson.build: + * gst-libs/gst/uridownloader/meson.build: + * gst-libs/gst/va/meson.build: + * gst-libs/gst/vulkan/meson.build: + * gst-libs/gst/wayland/meson.build: + * gst-libs/gst/webrtc/meson.build: + * gst-libs/gst/webrtc/nice/meson.build: + * meson.build: + meson: Namespace the plugins_doc_dep/libraries variables + Part-of: + +2022-09-01 10:28:13 -0400 Thibault Saunier + + * gst-libs/gst/cuda/meson.build: + cuda: meson: Fix generating GstCuda gir file against gstreamer-full + Part-of: + +2022-08-31 18:44:14 -0400 Thibault Saunier + + * meson.build: + meson: Rename plugins list and make them "dependency" objects + Part-of: + +2022-08-30 05:02:31 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11memory.cpp: + d3d11memory: Fix GstAllocator::mem_copy() implementation + We were checking possible bind flags for the DXGI format + of the source texture but that's never applied to + the destination texture desc. + Just use the already configured bind (and misc) flags of source texture + for the destination texture allocation without additional check. + Part-of: + +2022-08-24 08:22:49 +0200 Robert Rosengren + + * ext/curl/gstcurlbasesink.c: + * ext/curl/gstcurlbasesink.h: + curlbasesink: gst_curl_base_sink_transfer_thread_close is internal + gst_curl_base_sink_transfer_thread_close is moved from external header + to be static function, as it has no users. + Part-of: + +2022-07-07 09:20:04 +0200 Robert Rosengren + + * docs/plugins/gst_plugins_cache.json: + * ext/curl/gstcurlhttpsink.c: + * ext/curl/gstcurlhttpsink.h: + curlhttpsink: Only set MIME as content-type if not set by property + Setting the content-type property shall override internally detected MIME + types, to make it possible to do as following example (where audio/basic to be + used prior to audio/x-mulaw): + gst-launch-1.0 ... ! mulawenc ! audio/x-mulaw,rate=8000,channels=1 ! + curlhttpsink location= content-type=audio/basic + Part-of: + +2022-08-26 00:16:56 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11-private.h: + * gst-libs/gst/d3d11/gstd3d11bufferpool.cpp: + * gst-libs/gst/d3d11/gstd3d11bufferpool.h: + * gst-libs/gst/d3d11/gstd3d11compile.cpp: + * gst-libs/gst/d3d11/gstd3d11converter.cpp: + * gst-libs/gst/d3d11/gstd3d11converter.h: + * gst-libs/gst/d3d11/gstd3d11device.cpp: + * gst-libs/gst/d3d11/gstd3d11device.h: + * gst-libs/gst/d3d11/gstd3d11format.cpp: + * gst-libs/gst/d3d11/gstd3d11format.h: + * gst-libs/gst/d3d11/gstd3d11memory.cpp: + * gst-libs/gst/d3d11/gstd3d11memory.h: + * gst-libs/gst/d3d11/gstd3d11utils.cpp: + * sys/d3d11/gstd3d11pluginutils.h: + d3d11: Update library doc + * Private header name is changed to gstd3d11-private.h to follow + naming convention + * Add Since mark everywhere + * Update member variable names to be consistent with the other + object implementations in this library + * Correct outdated documentation + Part-of: + +2022-08-25 14:24:25 +0200 Piotr Brzeziński + + * sys/applemedia/avfvideosrc.m: + avfvideosrc: Fix wrong default framerate value + Current default G_MAXINT is not a correct value under any circumstances. + This creates an issue with screen capture, during which we currently do + not get any framerate info causing G_MAXINT to show up, where elements + downstream can possibly misbehave - for example, `vtenc` causes + a kernel panic. + Replace with 30/1 to avoid such scenarios. + Part-of: + +2022-08-25 15:28:21 +0800 He Junyan + + * sys/va/gstjpegdecoder.c: + jpegdecoder: return the real error of decode_scan and decode_frame. + The current handle_frame() does not return the real error that happens + in decode_scan and decode_frame, which makes the pipeline continue with + the error and may trigger asserting later. + We also return the error when decode_quant_table or decode_huffman_table + fails. + Part-of: + +2022-08-19 21:54:48 +0900 Seungha Yang + + * tests/examples/d3d11/d3d11videosink-present.cpp: + * tests/examples/d3d11/meson.build: + examples: d3d11videosink: Add present signal example + Add an example to show the usage of present singal. + In this example, a text overlay with alpha blended background + will be rendered on swapchain's backbuffer by using + Direct3D11, Direct2D, and DirectWrite APIs. + Part-of: + +2022-08-24 00:13:21 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.cpp: + * sys/d3d11/gstd3d11window.cpp: + * sys/d3d11/gstd3d11window.h: + * sys/d3d11/gstd3d11window_dummy.cpp: + d3d11videosink: Add display-format property + Make swapchian's display format configurable, since some DXGI formats + we can use for swapchain are not API interop compatible. + For instance, BGRA format should be used for Direct2D interop. + Part-of: + +2022-08-19 20:25:31 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.cpp: + * sys/d3d11/gstd3d11window.cpp: + * sys/d3d11/gstd3d11window.h: + * sys/d3d11/gstd3d11window_corewindow.cpp: + * sys/d3d11/gstd3d11window_swapchainpanel.cpp: + * sys/d3d11/gstd3d11window_win32.cpp: + d3d11videosink: Add present signal + The "present" signal will be emitted just before the + IDXGISwapChain::Present() call. The client can perform additional + GPU operation with given GstD3D11Device object and + ID3D11RenderTargetView handle. Or, the client can read back + the scene to be displayed on window using the signal. + Part-of: + +2022-08-19 04:49:53 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth265decoder.c: + h265decoder: Update SpsMaxLatencyPictures properly + The SpsMaxLatencyPictures value never gets back to zero even if + it's needed. Update the value properly. + Part-of: + +2022-08-19 04:44:48 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth265decoder.c: + h265decoder: Reorganize debug printing + As of the MR + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2575 + gst_h265_decoder_process_sps() is called per slice and it causes + noisy debug message print. + Reorganize related and the other debug printings at once. + Part-of: + +2022-08-20 16:15:15 +0100 Philippe Normand + + * ext/openh264/gstopenh264dec.cpp: + * ext/openh264/gstopenh264enc.cpp: + openh264: Register debug categories earlier + Otherwise the GST_ERROR message logged in case of ABI mismatch would be done on + an uninitialized category. + Part-of: + +2022-08-20 16:57:27 +0100 Philippe Normand + + * ext/openh264/gstopenh264enc.cpp: + openh264enc: Fix constrained-high encoding + constrained-high is high without B-frames, there is no EProfileIdc for this, so + assume high instead of hitting an assert down the line. + Part-of: + +2022-08-19 09:07:50 -0400 Thibault Saunier + + * gst-libs/gst/webrtc/ice.c: + * gst-libs/gst/webrtc/ice.h: + * gst-libs/gst/webrtc/nice/nice.c: + webrtc:ice: Fix candidate stats related APIs for bindings + null-terminated arrays of structures is not usable. + Part-of: + +2022-08-18 13:27:02 +0800 He Junyan + + * sys/va/gstvah265dec.c: + va: h265dec: Enable the scc_main_4:4:4_10 profile. + We should enable this profile which is already allown in vaprofile.c + after libva 1.8 version. + Part-of: + +2022-07-06 09:08:17 -0400 U. Artie Eoff + + * docs/plugins/gst_plugins_cache.json: + * sys/kms/gstkmssink.c: + * sys/kms/gstkmssink.h: + kmssink: add fd property + This allows an application to provide their own opened DRM device + fd handle to kmssink. For example, an application can lease + multiple fd's from a DRM master to display on different CRTC + outputs at the same time with multiple kmssink instances. + Specifying the fd property is not allowed when driver-name + and/or bus-id properties are specified. + Part-of: + +2022-08-19 00:05:17 +0900 Seungha Yang + + * sys/d3d11/gstd3d11deinterlace.cpp: + * sys/d3d11/gstd3d11screencapture.cpp: + * sys/d3d11/gstd3d11videosink.cpp: + d3d11: Use CRITICAL_SECTION instead of GRecMutex + The GRecMutex abstraction (and heap allocation happens in GLib) + is unnecessary for this plugin. + Part-of: + +2022-08-17 11:18:54 -0400 Thibault Saunier + + * gst-libs/gst/webrtc/webrtc_fwd.h: + webrtc: doc: Cleanup Since markers + We hide some newly public symbols when moving some objects to the library + which was not really correct in the end. Properly add the Since markers + as needed. + Part-of: + +2022-08-16 08:59:00 -0400 Thibault Saunier + + * gst-libs/gst/webrtc/ice.h: + webrtc:ice: Reindent header + Part-of: + +2022-08-15 21:27:06 -0400 Thibault Saunier + + * gst-libs/gst/webrtc/ice.h: + webrtc:ice: Mark protected fields as such + Part-of: + +2022-08-15 21:25:25 -0400 Thibault Saunier + + * gst-libs/gst/webrtc/datachannel.c: + * gst-libs/gst/webrtc/dtlstransport.c: + * gst-libs/gst/webrtc/ice.c: + * gst-libs/gst/webrtc/icestream.c: + * gst-libs/gst/webrtc/icetransport.c: + * gst-libs/gst/webrtc/rtpreceiver.c: + * gst-libs/gst/webrtc/rtpsender.c: + * gst-libs/gst/webrtc/rtptransceiver.c: + webrtc: Fix documentaton moving symbols in the right pages + As those symbols are documented in a 'fwd' header smart indexing in + hotdoc wasn't working. + Part-of: + +2022-08-15 11:52:50 -0400 Thibault Saunier + + * gst-libs/gst/webrtc/ice.c: + * gst-libs/gst/webrtc/ice.h: + * gst-libs/gst/webrtc/nice/nice.c: + webrtc:ice: Avoid using GArray in public API + And use plain null terminated C arrays instead. + Part-of: + +2022-08-15 11:37:57 -0400 Thibault Saunier + + * gst-libs/gst/webrtc/ice.c: + webrtc:ice: Fix some annotations + Part-of: + +2022-08-15 11:36:25 -0400 Thibault Saunier + + * gst-libs/gst/webrtc/ice.c: + * gst-libs/gst/webrtc/ice.h: + webrtc: Make GstWebRTCIceCandidateStats a Boxed type + Part-of: + +2022-08-14 17:38:24 -0400 Thibault Saunier + + * gst-libs/gst/webrtc/ice.h: + webrtc:ice: Add padding to structures + Part-of: + +2022-08-14 21:49:27 +0900 Seungha Yang + + * gst-libs/gst/cuda/cuda-gst.h: + * gst-libs/gst/cuda/gstcudanvrtc.c: + * gst-libs/gst/cuda/gstcudanvrtc.h: + * gst-libs/gst/cuda/gstnvrtcloader.c: + * gst-libs/gst/cuda/gstnvrtcloader.h: + * gst-libs/gst/cuda/meson.build: + * sys/nvcodec/gstcudafilter.c: + cuda: Hide runtime compiler related header and symbols + That's already abstracted via gst_cuda_nvrtc_compile() method + and therefore, we do not need to expose such symbols yet. + Part-of: + +2022-08-17 12:22:38 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvajpegdec.c: + vajpegdec: Fix memory leak. + Free value content. + Part-of: + +2022-08-16 20:05:15 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvajpegdec.c: + vajpegdec: Fix 4:2:2 for i965. + Since i965 uses NV12 either for 4:2:0 and 4:2:2 chroma (using an + internal color conversion) the chroma validation has to be shortcut. + Part-of: + +2022-08-16 19:50:49 +0200 Víctor Manuel Jáquez Leal + + * gst-libs/gst/va/gstvavideoformat.c: + va: libs: Add Y42B format. + Enable 4:2:2 JPEG decoding in iHD. + Part-of: + +2022-08-16 16:06:20 +0200 Víctor Manuel Jáquez Leal + + * gst-libs/gst/va/gstvavideoformat.c: + * gst-libs/gst/va/gstvavideoformat.h: + * sys/va/gstvacaps.c: + va: Validate JPEG subsampling configurations. + There are Mesa Gallium drivers that report subsampling but without + any pixel format. So, strip out these subsamplings. + Part-of: + +2022-08-16 14:45:46 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvadecoder.c: + * sys/va/gstvaencoder.c: + va: gst_va_create_raw_caps_from_config() may return NULL. + This patch verifies if the function returns NULL in the caller. + Part-of: + +2022-08-17 11:42:09 -0400 Eric Knapp + + * sys/decklink/gstdecklink.cpp: + * sys/decklink/gstdecklink.h: + * sys/decklink/gstdecklinkvideosrc.cpp: + decklink: Validate video input format + Part-of: + +2022-08-15 11:23:56 -0400 Eric Knapp + + * sys/decklink/gstdecklink.cpp: + decklink: Auto-detect 10-bit YUV + Part-of: + +2022-08-14 22:31:29 -0400 Daniel Morin + + * gst-libs/gst/play/gstplay-media-info.h: + * gst-libs/gst/play/gstplay-signal-adapter.h: + * gst-libs/gst/play/gstplay-video-overlay-video-renderer.h: + * gst-libs/gst/play/gstplay-video-renderer.h: + * gst-libs/gst/play/gstplay-visualization.h: + gst-play: missing cleanup for g_autoptr + Without this change cleanup function for g_autoptr is not defined for + GstPlayMediaInfo, GstPlaySignalAdapter, GstPlayVideoRenderer, + GstPlayVideoOverlayVideoRenderer and GstPlayVisualization. Cleanup + function was defined in gstplay.h, but missing in other header files. + Part-of: + +2022-08-16 21:01:47 +0900 Seungha Yang + + * gst-libs/gst/d3d11/meson.build: + meson: d3d11: Fix missing header install + Install gstd3d11compile.h header file + Part-of: + +2022-08-15 01:50:15 +0900 Seungha Yang + + * sys/d3d11/gstd3d11av1dec.cpp: + * sys/d3d11/gstd3d11decoder.cpp: + * sys/d3d11/gstd3d11decoder.h: + * sys/d3d11/gstd3d11h264dec.cpp: + * sys/d3d11/gstd3d11h265dec.cpp: + * sys/d3d11/gstd3d11mpeg2dec.cpp: + * sys/d3d11/gstd3d11vp8dec.cpp: + * sys/d3d11/gstd3d11vp9dec.cpp: + d3d11decoder: Do timer based DecoderBeginFrame retry + ... instead of retry count based one, because the precision of Sleep() + varies depending on system and application configuration. + Also, don't retry DecoderBeginFrame if decoder is doing flush. + Part-of: + +2022-08-14 21:18:24 +0900 Seungha Yang + + * sys/nvcodec/gstcudamemorycopy.c: + cudaupload,cudadownload: Don't simplify caps in transform_caps + The simplified caps might not be a subset of filter caps + and basetransform will complain about it. + Part-of: + +2022-08-15 00:22:14 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.cpp: + d3d11decoder: Do not use miniobject qdata + The miniobject qdata uses global mutex. + Use ID3D11DeviceChild::{Set,Get}PrivateData methods instead. + Part-of: + +2022-08-13 05:24:03 +0900 Seungha Yang + + * docs/plugins/gst_plugins_cache.json: + docs: Remove dxgiscreencapsrc from documentation + The implementation was dropped in + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1750 + Part-of: + +2022-08-13 12:24:37 +0300 Sebastian Dröge + + * gst-libs/gst/player/gstplayer-media-info.c: + player: Don't leak wrapped video info + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1373 + Part-of: + +2022-08-13 11:50:20 +0300 Sebastian Dröge + + * gst-libs/gst/play/gstplay.c: + play: Make ownership of video-sink clearer in combination with floating references + And correctly handle the case of VideoRenderer::create_video_sink() not + actually returning a floating reference, which might be tricky for some + bindings. + Part-of: + +2022-08-13 11:49:08 +0300 Sebastian Dröge + + * gst-libs/gst/play/gstplay.c: + play: Fix object construction + Ideally new() functions should simply call g_object_new() and not much + else, so let's do that here and handle all the construction properly in + a GObject way. + Now a play object created via g_object_new() is actually usable. + Part-of: + +2022-08-13 11:39:59 +0300 Sebastian Dröge + + * gst-libs/gst/player/gstplayer.c: + player: Fix object construction + Ideally new() functions should simply call g_object_new() and not much + else, so let's do that here and handle all the construction properly in + a GObject way. + Now a player object created via g_object_new() is actually usable. + In addition, also fix the video-renderer property so that reading it + returns an object of the correct type. + Part-of: + +2022-08-13 11:30:35 +0300 Sebastian Dröge + + * gst-libs/gst/player/gstplayer.c: + player: Release signal adapter on finalize + Part-of: + +2022-08-08 23:37:11 +0900 Seungha Yang + + * gst/mxf/mxfaes-bwf.c: + mxfdemux: Always calculate BlockAlign of raw audio + Workaround for nBlockAlign and nBitsPerSample mismatch. Always + use the formula described in the specification for BlockAlign value + Part-of: + +2022-08-12 22:05:36 +0900 Seungha Yang + + * gst-libs/gst/d3d11/meson.build: + meson: d3d11: Fix build with GIR enabled + ... and remove unused list + Part-of: + +2022-08-12 18:24:41 +0300 Matthias Clasen + + * gst-libs/gst/player/gstplayer.c: + gstplayer: Plug a memory leak + This was showing up as a memory leak in GTK's + gstreamer media backend: + 40 bytes in 1 blocks are definitely lost in loss record 18,487 of 40,868 + at 0x484586F: malloc (vg_replace_malloc.c:381) + by 0x50D5278: g_malloc (gmem.c:125) + by 0x50EDBA5: g_slice_alloc (gslice.c:1072) + by 0x50EFBCC: g_slice_alloc0 (gslice.c:1098) + by 0x51F2F45: g_type_create_instance (gtype.c:1911) + by 0x51DAE37: g_object_new_internal (gobject.c:2011) + by 0x51DC080: g_object_new_with_properties (gobject.c:2181) + by 0x51DCB20: g_object_new (gobject.c:1821) + by 0x9855F86: UnknownInlinedFun (gstplayer-wrapped-video-renderer.c:109) + by 0x9855F86: gst_player_new (gstplayer.c:579) + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1374 + Part-of: + +2022-08-12 11:32:45 +0200 Corentin Damman + + * sys/d3d11/gstd3d11window.cpp: + d3d11window: fix DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING swap chain flag for full screen + Fixes #1372 (regression introduced in 5eeec165) + Part-of: + +2022-08-10 11:12:37 +0100 Philippe Normand + + * ext/wpe/gstwpesrcbin.cpp: + wpesrc: Switch URI handler to web+... protocols + The web://http:// URIs were not compliant with RFC 3986. Using web+http:// + allows us to use the GstUri parser to pass down a valid URI to `wpevideosrc`. + Corresponding change for the CEF source element: + https://github.com/centricular/gstcefsrc/commit/8d499495dd79cc0bf9a38ae82b03e374d78f68ae + Part-of: + +2022-08-09 12:24:53 +0200 Corentin Damman + + * sys/nvcodec/gstnvh264encoder.cpp: + * sys/nvcodec/gstnvh265encoder.cpp: + nvcodec: fix caps leaks in nvh264/h265encoder + Part-of: + +2022-08-09 12:29:34 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvah264enc.c: + vah264enc: Set codec frame sync point if IDR + This flag is used by GstVideoEncoder base class for certain configurations. + Part-of: + +2022-08-09 12:28:43 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvaencoder.c: + * sys/va/gstvaencoder.h: + * sys/va/gstvah264enc.c: + vah264enc: Packed headers can be zero. + A driver can report back no packed header support (VA_ENC_PACKED_HEADER_NONE). + This patch removes that false verification. + Part-of: + +2022-08-07 23:24:04 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11converter.cpp: + * gst-libs/gst/d3d11/gstd3d11device.cpp: + * sys/d3d11/gstd3d11convert.cpp: + * sys/d3d11/gstd3d11decoder.cpp: + * sys/d3d11/gstd3d11window_win32.cpp: + d3d11: Use WIN32 API directly for locking with RAII pattern + Such abstraction is unnecessary for this library/plugin. + Use WIN32 API directly instead of GLib wrappers. + Part-of: + +2022-08-07 22:41:07 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11_private.h: + * gst-libs/gst/d3d11/gstd3d11memory.cpp: + d3d11memory: Remove unnecessary locking + * memory map/unmap is already protected by d3d11 device lock. + Don't need to take another memory lock. + * Use WIN32 critical section and slim reader/writer lock APIs + directly instead of GLib wrappers. + Part-of: + +2022-08-05 17:20:05 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvah264enc.c: + vah264enc: Fix caps for mesa gallium. + Radeon mesa gallium driver has a bug which adds P010_10LE sink caps + format. This patch removes formats which arent 420 chroma. + gst_caps_set_format_array() wasn't used because the fix traverse + several structures with potential different formats. + Part-of: + +2022-08-05 15:54:39 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvah264dec.c: + * sys/va/gstvaprofile.c: + vah264dec: Complete profiles in decoder. + Instead of specifying all the H.264 "supported" profiles in the global + hash table (used either by decoders and encoders), just complete them + in the decoder only, since the encoder doesn't support them. + Part-of: + +2022-08-05 22:34:06 +0900 Seungha Yang + + * sys/d3d11/gstd3d11pluginutils.cpp: + * sys/d3d11/gstd3d11window.cpp: + * sys/d3d11/gstd3d11window.h: + * sys/d3d11/gstd3d11window_dummy.cpp: + * sys/qsv/gstqsvallocator_d3d11.cpp: + * tests/examples/d3d11/d3d11converter.cpp: + * tests/examples/d3d11/d3d11videosink-appsrc.cpp: + d3d11: Don't find global default allocator + We were using global default allocator already. Pass null + allocator object to *_alloc() methods then the method will + use default allocator. + Part-of: + +2022-08-05 22:23:52 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11memory.cpp: + d3d11memory: Allow null GstD3D11Allocator to alloc methods + Similar to gst_allocator_alloc(), use default GstD3D11Allocator + when caller passes null allocator object + Part-of: + +2022-08-06 00:03:43 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11_private.h: + * gst-libs/gst/d3d11/gstd3d11compile.cpp: + * gst-libs/gst/d3d11/gstd3d11converter.cpp: + * gst-libs/gst/d3d11/gstd3d11device.cpp: + * gst-libs/gst/d3d11/gstd3d11format.cpp: + * gst-libs/gst/d3d11/gstd3d11memory.cpp: + * gst-libs/gst/d3d11/gstd3d11utils.cpp: + * sys/d3d11/gstd3d11decoder.cpp: + * sys/d3d11/gstd3d11deinterlace.cpp: + * sys/d3d11/gstd3d11pluginutils.cpp: + * sys/d3d11/gstd3d11testsrc.cpp: + * sys/d3d11/gstd3d11window.cpp: + d3d11: Use std::call_once() + g_once_init_enter() always takes global mutex for non-GCC build. + Use C++ once call implementation + Part-of: + +2022-08-06 04:57:49 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11device.cpp: + d3d11device: Use WIN32 critical section API directly + GLib's GRecMutex will allocate another heap memory for CRITICAL_SECTION + struct and g_rec_mutex_lock/g_rec_mutex_unlock use WIN32 APIs actually. + We don't need such intermediate function calls and redundant heap allocation. + Just call WIN32 APIs directly. + Part-of: + +2022-08-03 17:52:25 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvabaseenc.c: + * sys/va/gstvabaseenc.h: + * sys/va/gstvah264enc.c: + vah264enc: Lock properties read/write. + This is a first step for changing properties at runtime. + And add missing bitrate upate and notification. + Fixes: #1258 + Part-of: + +2022-08-04 13:02:00 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvah264enc.c: + vah264enc: Use guint32 for rc_ctrl as it's for rc_ctrl_mode. + Part-of: + +2022-08-04 12:57:11 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvah264enc.c: + vah264enc: Split aud property and its usage. + Just as other property variables, it's split for ease it usage, + particularly after adding access locks. + Part-of: + +2022-08-04 12:00:58 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvabaseenc.h: + va: baseenc: Untabbify and format. + Part-of: + +2022-08-03 03:29:20 +0900 Seungha Yang + + * sys/d3d11/gstd3d11compositor.cpp: + d3d11compositor: Add gamma-mode and primaries-mode properties + Allows controlling gamma remap and/or chromatic adaptation behavior. + Part-of: + +2022-08-03 01:47:46 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.cpp: + * sys/d3d11/gstd3d11window.cpp: + * sys/d3d11/gstd3d11window.h: + * sys/d3d11/gstd3d11window_dummy.cpp: + d3d11videosink: Add gamma-mode and primaries-mode properties + Allows controlling gamma remap and/or chromatic adaptation behavior. + Part-of: + +2022-08-03 01:19:41 +0900 Seungha Yang + + * sys/d3d11/gstd3d11convert.cpp: + d3d11convert: Add gamma-mode and primaries-mode properties + Allows controlling gamma remap and/or chromatic adaptation behavior. + Part-of: + +2022-08-03 00:26:33 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11converter.cpp: + * gst-libs/gst/d3d11/gstd3d11converter.h: + d3d11converter: Add options for gamma and primaries conversion + Gamma remap and/or primaries conversion requires additional + processing which might be something user want to avoid, performance + reason for example + Part-of: + +2022-08-01 13:04:47 +0200 Robert Mader + + * ext/wayland/gstwaylandsink.c: + waylandsink: Logging code style updates + For better readability of debug messages and to keep similar code + in sync with `GstGtkWaylandsink`. + Part-of: + +2022-06-30 11:48:45 +0200 Robert Mader + + * ext/wayland/gstwaylandsink.c: + waylandsink: Rename occurrences of GstWaylandSink to 'self' + Rename all occurrences to `self`, making it consintent with `GstWl*` + and `GstGtkWaylandsink`. + Part-of: + +2022-07-19 15:10:00 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvavpp.c: + vapostproc: Check for colorimetry changes. + It uses what's merged in + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2765 + Part-of: + +2022-04-11 15:35:45 -0500 Olivier Crête + + * tests/examples/gtk/gtkwaylandsink.c: + gtkwaylandsink test: Add navigationtest to example + Part-of: + +2021-12-08 10:30:21 +0200 George Kiagiadakis + + * docs/plugins/gst_plugins_cache.json: + * ext/gtk/gstgtkutils.c: + * ext/gtk/gstgtkutils.h: + * ext/gtk/gstgtkwaylandsink.c: + * ext/gtk/gstgtkwaylandsink.h: + * ext/gtk/gstplugin.c: + * ext/gtk/gtkgstbasewidget.c: + * ext/gtk/gtkgstbasewidget.h: + * ext/gtk/gtkgstwaylandwidget.c: + * ext/gtk/gtkgstwaylandwidget.h: + * ext/gtk/meson.build: + * ext/meson.build: + * meson_options.txt: + * tests/examples/gtk/gtkwaylandsink.c: + * tests/examples/gtk/meson.build: + * tests/examples/gtk/window.ui: + * tests/examples/meson.build: + Add new gtkwaylandsink element + This is based on gtksink, but similar to waylandsink uses Wayland APIs + directly instead of rendering with Gtk/Cairo primitives. + Note that the long term plan is to move this into the existing extension + in `-good`, which requires the Wayland library to move the as well. + For this reason several files like `gstgtkutils.*` and `gtkgstbasewidget.*` + are straight copies and should be kept in sync. + Part-of: + +2022-08-02 05:06:24 +0900 Seungha Yang + + * sys/d3d11/gstd3d11window.cpp: + * sys/d3d11/gstd3d11window_win32.cpp: + d3d11videosink: Translate mouse position + Converts mouse cursor position represented in display coordinates to + stream coordinates. + Part-of: + +2022-08-02 04:16:31 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.cpp: + d3d11videosink: Early terminate mouse/keyboard event handling + ... and add missing null check (plus coding style fix) + Part-of: + +2022-07-30 17:28:41 +0100 Philippe Normand + + * gst-libs/gst/webrtc/nice/nice.c: + * gst-libs/gst/webrtc/nice/nicestream.c: + * gst-libs/gst/webrtc/nice/nicetransport.c: + webrtc: nice: WeakRef access fixes + The GstWebRTCNiceStream::ice property getter already hands-off a full reference, + so there is no need to call g_weak_ref_get() in call sites. + Fixes #1350 + Part-of: + +2022-07-30 17:19:42 +0100 Philippe Normand + + * gst-libs/gst/webrtc/ice.h: + webrtc: ice: Fix GstWebRTCICE parent class + It is a GstObject, not a GObject. + Part-of: + +2022-07-30 17:43:38 +0100 Philippe Normand + + * ext/dtls/gstdtlssrtpdec.c: + * ext/dtls/gstdtlssrtpenc.c: + dtls: Properly name encoder/decoder logging categories + Part-of: + +2022-07-30 17:42:50 +0100 Philippe Normand + + * ext/dtls/gstdtlsagent.c: + * ext/dtls/gstdtlsagent.h: + * ext/dtls/gstdtlsconnection.c: + * ext/dtls/gstdtlsconnection.h: + dtls: Make agent and connection GstObjects + Facilitates debug logs interpretation of GST_DEBUG_OBJECT() calls. + Part-of: + +2022-07-30 02:29:49 +0530 Nirbheek Chauhan + + * ext/sctp/usrsctp/meson.build: + * sys/qsv/libmfx/meson.build: + meson: Don't pass -Werror to vendored code + Do it the correct way with libusrsctp -- override the option so that + it's done in a compiler-agnostic and future-proof way. + Part-of: + +2022-05-25 18:40:30 +0530 Nirbheek Chauhan + + * gst/rtmp2/gstrtmp2locationhandler.c: + * gst/rtmp2/rtmp/rtmpclient.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: + +2022-05-25 16:03:22 +0530 Nirbheek Chauhan + + * ext/dtls/gstdtlscertificate.c: + dtls: Disable OpenSSL 3.0 deprecation warnings for now + Fedora 36 ships with OpenSSL 3.0, which deprecates all low-level APIs, + so this code needs to be rewritten. There is no easy fix in the + porting guide, and it recommends disabling the warnings if you can't + use the high-level API. + https://wiki.openssl.org/index.php/OpenSSL_3.0#Upgrading_to_OpenSSL_3.0_from_OpenSSL_1.1.1 + Here's the replacement API: + https://www.openssl.org/docs/man3.0/man7/migration_guide.html#Deprecated-low-level-object-creation + Part-of: + +2022-07-29 02:36:40 +0900 Seungha Yang + + * sys/wasapi2/gstwasapi2ringbuffer.cpp: + wasapi2: Fix initial mute/volume setting + Fix up volume/mute change flag setting + Part-of: + +2022-07-26 13:59:33 -0400 Eric Knapp + + * sys/va/gstvah264enc.c: + va: h264enc: Make AUD the first NAL unit + Part-of: + +2022-07-26 15:49:32 -0400 U. Artie Eoff + + * ext/webrtc/meson.build: + * gst-libs/gst/webrtc/nice/meson.build: + meson: webrtc: ensure definition of libgstwebrtcnice_dep + ... and skip if it's disabled. + Fixes #1344 + Part-of: + +2022-04-18 23:25:13 +0530 yatinmaan + + * docs/plugins/gst_plugins_cache.json: + * ext/webrtc/fwd.h: + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/gstwebrtcbin.h: + * ext/webrtc/gstwebrtcstats.c: + * ext/webrtc/meson.build: + * ext/webrtc/transportstream.c: + * ext/webrtc/webrtcsctptransport.h: + * gst-libs/gst/webrtc/ice.c: + * gst-libs/gst/webrtc/ice.h: + * gst-libs/gst/webrtc/icestream.c: + * gst-libs/gst/webrtc/icestream.h: + * gst-libs/gst/webrtc/icetransport.h: + * gst-libs/gst/webrtc/meson.build: + * gst-libs/gst/webrtc/nice/meson.build: + * gst-libs/gst/webrtc/nice/nice.c: + * gst-libs/gst/webrtc/nice/nice.h: + * gst-libs/gst/webrtc/nice/nice_fwd.h: + * gst-libs/gst/webrtc/nice/nicestream.c: + * gst-libs/gst/webrtc/nice/nicestream.h: + * gst-libs/gst/webrtc/nice/nicetransport.c: + * gst-libs/gst/webrtc/nice/nicetransport.h: + * gst-libs/gst/webrtc/webrtc-priv.h: + * gst-libs/gst/webrtc/webrtc.h: + * gst-libs/gst/webrtc/webrtc_fwd.h: + webrtc: Split WebRTCICE into base classes and implementation. + Part-of: + +2022-07-22 22:50:33 +0900 Seungha Yang + + * sys/qsv/gstqsvallocator_d3d11.cpp: + * sys/qsv/gstqsvencoder.cpp: + qsvencoder: Add support for D3D11 shared texture + Although input texture belongs to the other d3d11 device, + we can do GPU copy when its physical device is identical. + Part-of: + +2022-07-23 00:41:49 +0900 Seungha Yang + + * sys/amfcodec/gstamfencoder.cpp: + * sys/d3d11/gstd3d11screencapture.cpp: + * sys/d3d11/gstd3d11window_dummy.cpp: + * sys/mediafoundation/gstmfvideoencoder.cpp: + * sys/mediafoundation/gstmfvideoencoder.h: + * sys/nvcodec/gstnvencoder.cpp: + d3d11: Port to GstD3D11Fence + Part-of: + +2022-07-23 00:11:18 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11_fwd.h: + * gst-libs/gst/d3d11/gstd3d11device.cpp: + * gst-libs/gst/d3d11/gstd3d11device.h: + d3d11: Implement fence abstraction + Depending on device feature level, d3d11 runtime can support + ID3D11Fence which is equivalent to ID3D12Fence. + Waiting using fence has performance-wise benefit over pulling + ID3D11Query status. If ID3D11Fence is not supported by device, + then ID3D11Query will be used instead. + Part-of: + +2022-06-08 15:44:26 +0200 Benjamin Gaignard + + * gst-libs/gst/codecs/gsth265decoder.c: + codecs: h265: Make sure that sps is processed just before decoding + It may happens that bitstream doesn't provided SPS in decoding order + (like in VPSSPSPPS_A_MainConcept_1 conformance test file). + To be sure that the decoder got the correct SPS parameters process + SPS just before start decoding the frame. + Part-of: + +2022-03-18 15:04:18 +0100 Sebastian Fricke + + * gst-libs/gst/codecs/gsth265decoder.c: + codecs: h265: Fix typos + Fix multiple typos in warning and info messages. + Part-of: + +2022-05-16 15:27:40 +0200 Benjamin Gaignard + + * gst/videoparsers/gsth265parse.c: + videoparsers: h265: Be less restrictive between PPS and SPS parsing order + Allow to parse PPS to be parser even if SPS hasn't been parsered before. + This help to parse VPSSPSPPS_A_MainConcept_1 conformance test + Part-of: + +2022-05-16 15:25:36 +0200 Benjamin Gaignard + + * gst-libs/gst/codecparsers/gsth265parser.c: + * gst-libs/gst/codecparsers/gsth265parser.h: + codecparsers: Defering computation of pps and sps fields + While possible defer computataion of pps and sps fields until + slice parsing since it may happens that bitstreams don't encoded + them in expected order. + A example weird ordered bitstreams is VPSSPSPPS_A_MainConcept_1 + conformance test. + Part-of: + +2022-07-20 12:11:47 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codech264dec.c: + v4l2codecs: h264: Reset the number of slices on picture start + This way, if we aborted a frame in the middle, we don't endup thinking + there is multiple slices to send. + Part-of: + +2022-07-12 15:44:45 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codech264dec.c: + v4l2codecs: h264: Fix initialization of the slice array + The function g_array_sized_new() leaves the len to 0, but the slice + implementation assumes it would be set to 4. Sending multiple slices is + not yet support for H.264 as no driver needed it yet, but if that code + was to be used it would have overflowed as the array would never grow as + multiple 0 by 2 always results in 0. + Part-of: + +2022-07-12 15:43:34 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codech264dec.c: + v4l2codecs: h264: Rename count variable to num_controls + This is the counter for the used control slot. The term num_controls was + introduced in the HEVC decoder and felt like a better choice. + Part-of: + +2022-06-20 12:22:20 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codech265dec.c: + v4l2codecs: hevc: Add an API check + This adds an API check and bump recommended base kernel version to 5.20. + Part-of: + +2022-07-12 08:56:07 -0400 Benjamin Gaignard + + * sys/v4l2codecs/gstv4l2codech265dec.c: + * sys/v4l2codecs/gstv4l2codech265dec.h: + * sys/v4l2codecs/meson.build: + * sys/v4l2codecs/plugin.c: + v4l2codecs: Add v4l2 stateless H265 decoder + Add v4l2 stateless H265 decoder. + Co-authored-by: Nicolas Dufresne + Co-authored-by: Sebastian Fricke + Part-of: + +2022-04-25 15:27:39 +0200 Benjamin Gaignard + + * sys/v4l2codecs/gstv4l2decoder.c: + v4l2codecs: Increase minimum payload size + Fluster MAXBINS_{A-C}_TI_5 HEVC tests files require to store + a payload larger than usual given their resolutions. + Increase the minimum payload size to handle them correctly. + Part-of: + +2022-07-12 08:57:38 -0400 Nicolas Dufresne + + * sys/v4l2codecs/linux/v4l2-controls.h: + * sys/v4l2codecs/linux/videodev2.h: + v4l2codecs: Align v4l2 headers with HEVC final uAPI + HEVC uAPI have landed for kernel 5.10. + Part-of: + +2022-04-29 12:10:05 -0400 Nicolas Dufresne + + * gst-libs/gst/codecparsers/gsth265parser.c: + * gst-libs/gst/codecparsers/gsth265parser.h: + codecparsers: h265: Introduce long_term_ref_pic_set_size + This is the size of the `if( long_term_ref_pics_present_flag )` inside + slice_segment_header( ) syntax. This size in bit, and after de-emulation + is needed by some HW. + Part-of: + +2022-07-21 16:11:03 +0300 Sebastian Dröge + + * gst/audiobuffersplit/gstaudiobuffersplit.c: + audiobuffersplit: Actually store number of samples to drop in gapless mode + Part-of: + +2022-07-21 16:10:18 +0300 Sebastian Dröge + + * gst/audiobuffersplit/gstaudiobuffersplit.c: + audiobuffersplit: Use input running time for comparison instead of the currently tracked running time + Otherwise gapless mode would do completely wrong calculations on + discontinuities and cause input/output to drift slowly. + Part-of: + +2022-07-21 13:38:22 +0300 Sebastian Dröge + + * gst/audiobuffersplit/gstaudiobuffersplit.c: + audiobuffersplit: Combine two if expressions to reduce indentation + Part-of: + +2022-07-22 04:51:14 +0900 Seungha Yang + + * sys/d3d11/gstd3d11compositor.cpp: + d3d11compositor: Add support for crop meta + GstD3D11Converter supports cropping already. Cropping is just + a matter of setting source rectangle area to converter, + from d3d11 point of view + Part-of: + +2022-07-18 00:41:00 +0900 Seungha Yang + + * tests/examples/d3d11/d3d11converter.cpp: + * tests/examples/d3d11/meson.build: + examples: d3d11: Add GstD3D11Converter example + An example to demonstrate color space conversion, rescale and flip/rotation + using GstD3D11Converter + Part-of: + +2022-07-21 05:13:21 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11.h: + * gst-libs/gst/d3d11/gstd3d11_fwd.h: + * gst-libs/gst/d3d11/gstd3d11_private.h: + * gst-libs/gst/d3d11/gstd3d11converter.cpp: + * gst-libs/gst/d3d11/gstd3d11converter.h: + * gst-libs/gst/d3d11/gstd3d11format.cpp: + * gst-libs/gst/d3d11/meson.build: + * sys/d3d11/gstd3d11compositor.cpp: + * sys/d3d11/gstd3d11convert.cpp: + * sys/d3d11/gstd3d11decoder.cpp: + * sys/d3d11/gstd3d11pluginutils.cpp: + * sys/d3d11/gstd3d11pluginutils.h: + * sys/d3d11/gstd3d11testsrc.cpp: + * sys/d3d11/gstd3d11window.h: + * sys/d3d11/meson.build: + d3d11: Move GstD3D11Converter to gst-libs + The object is equivalent to GstVideoConverter but for D3D11. + Application can use this object directly for various conversions, + such as color space conversion, rescale, crop and flip/rotation. + Part-of: + +2022-07-21 05:40:45 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11.h: + * gst-libs/gst/d3d11/gstd3d11memory.cpp: + * gst-libs/gst/d3d11/gstd3d11memory.h: + * gst-libs/gst/d3d11/meson.build: + d3d11: Define enum and flags types manually + gnome.mkenums_simple() doesn't work well for GstD3D11, seems to + be confused by numeric representation of D3D11, must be a bug + in GLib or so. Just don't rely on the incomplete automagic. + Part-of: + +2022-07-21 05:39:58 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11format.cpp: + d3d11: Run gst-indent + Part-of: + +2022-07-06 16:14:13 +0300 Jordan Petridis + + * ext/openmpt/gstopenmptdec.c: + openmpt: update from now deprecated api + https://lib.openmpt.org/doc/classopenmpt_1_1module.html#ab2695af0baa274054f5687741fa7c05b + Part-of: + +2022-04-29 19:27:16 +0800 Fan F He + + * sys/msdk/gstmsdkenc.c: + * sys/msdk/gstmsdkenc.h: + * sys/msdk/gstmsdkh264enc.c: + * sys/msdk/gstmsdkh265enc.c: + * sys/msdk/gstmsdkh265enc.h: + * sys/msdk/msdk-enums.c: + * sys/msdk/msdk-enums.h: + msdkenc: Enable LowDelayBrc and MaxFrameSize for I/P frame + Enable these features for accurate bitrate control. + Feature introduction of LowDelayBRC, MaxFrameSizeI and MaxFrameSizeP could be found here: + https://github.com/Intel-Media-SDK/MediaSDK/blob/master/doc/mediasdk-man.md + Signed-off-by: Fan F He + Part-of: + +2022-07-20 05:28:51 +0900 Seungha Yang + + * sys/d3d11/gstd3d11converter.cpp: + * sys/d3d11/gstd3d11converter.h: + * sys/d3d11/gstd3d11testsrc.cpp: + * sys/d3d11/gstd3d11window_dummy.cpp: + d3d11converter: Use GstStructure to set initialization options + Runtime updatable options are exposed via object properties + but there are a few options which should be known at initialization + time. Use GstStructure to signal it and to be easily extensible + Part-of: + +2022-07-19 01:52:48 +0900 Seungha Yang + + * sys/d3d11/gstd3d11converter.cpp: + d3d11converter: Use primaries and transfer function compare methods + Different enum values could be functionally equal, then we don't need + to do full conversion. + Part-of: + +2022-07-17 04:48:24 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11format.cpp: + * gst-libs/gst/d3d11/gstd3d11format.h: + * sys/d3d11/gstd3d11converter.cpp: + * sys/d3d11/gstd3d11pluginutils.cpp: + * sys/d3d11/gstd3d11pluginutils.h: + * sys/d3d11/gstd3d11screencapture.cpp: + * sys/d3d11/gstd3d11window.cpp: + d3d11format: Move DXGI color space mapping method to gst-libs + Expose color space mapping method to public so that application + can configure GstCaps or GstVideoInfo using DXGI color space + Part-of: + +2022-07-17 00:33:55 +0900 Seungha Yang + + * sys/d3d11/gstd3d11convert.cpp: + d3d11convert: Use new colorimetry compare function + Avoid conversion if both are functionally identical + Part-of: + +2022-07-17 23:58:19 +0900 Seungha Yang + + * sys/d3d11/gstd3d11testsrc.cpp: + d3d11testsrc: Fix SMPTE pattern rendering + It was wrong vertex shader code + Part-of: + +2022-07-13 10:30:49 +0200 Piotr Brzeziński + + * sys/applemedia/vtdec.c: + * sys/applemedia/vtenc.c: + applemedia: Add HEVC support to vtenc and vtdec + Part-of: + +2022-06-16 03:57:37 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11.h: + * gst-libs/gst/d3d11/gstd3d11compile.cpp: + * gst-libs/gst/d3d11/gstd3d11compile.h: + * gst-libs/gst/d3d11/meson.build: + * sys/d3d11/gstd3d11compositor.cpp: + * sys/d3d11/gstd3d11converter.cpp: + * sys/d3d11/gstd3d11overlaycompositor.cpp: + * sys/d3d11/gstd3d11screencapture.cpp: + * sys/d3d11/gstd3d11screencapturesrc.cpp: + * sys/d3d11/gstd3d11shader.cpp: + * sys/d3d11/gstd3d11shader.h: + * sys/d3d11/gstd3d11testsrc.cpp: + * sys/d3d11/meson.build: + * sys/d3d11/plugin.cpp: + d3d11: Move HLSL compiler to gst-libs + We should move this functionality to gst-libs so that GstD3D11Converter + can be moved to gst-libs. + Another advantage is that applications can call our + HLSL compiler wrapper method without any worry about OS version + dependent system installed HLSL library. + Note that there are multiple HLSL compiler library versions + on Windows and system installed one would be OS version dependent. + Part-of: + +2022-06-04 18:07:16 -0400 Thibault Saunier + + * docs/plugins/gst_plugins_cache.json: + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Add a signal to plug bandwidth estimator elements + We need GStreamer elements to do the bandwidth estimation as this way + they can also control the pacing of the transmission flow as specified + in the [GCC] algorithm for example. + Bandwidth estimator element are placed right before the "RTPSession" as + an "rtp-aux-sender" element. This way they can use the "Transport-wide + Congestion Control" RTCP feedback messages through the "RTPTwcc" custom + events that are sent by the rtpsession. + Applications are responsible to react to the bandwidth estimator element + and set the encoder target bitrate etc... which means that we can not + pass an estimator as an element factory, so a signal as been chosen + instead. + [GCC]: https://datatracker.ietf.org/doc/html/draft-ietf-rmcat-gcc-02 + Part-of: + +2022-07-08 00:16:02 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth265decoder.c: + h265decoder: Report latency + Similar to that of h264decoder + Part-of: + +2022-07-08 22:05:12 +0800 He Junyan + + * sys/va/gstvabaseenc.c: + va: baseenc: Do not use codec frame structure again after finish_frame(). + In _push_out_one_buffer(), we use codec frame structure again for error handling + after we already call finish_frame(), which is a latent segment fault. + Part-of: + +2022-07-08 21:57:40 +0800 He Junyan + + * sys/va/gstvabaseenc.c: + va: baseenc: Do not clear the codec frame twice when error. + The current manner will clear the input codec frame twice if we fail + to push the output data, which will trigger an assert. + Part-of: + +2022-07-05 18:21:12 +0300 Jordan Petridis + + * ext/fluidsynth/gstfluiddec.c: + fluiddec: Remove workaround for version 1.1.9 + We require >= 2.1 version since the previous commit + Part-of: + +2022-07-05 17:32:12 +0300 Jordan Petridis + + * ext/fluidsynth/gstfluiddec.c: + * ext/fluidsynth/meson.build: + fluidsynth: update from now deprecated api + fluid_synth_set_chorus_on and fluid_synth_set_reverb_on were + deprecated in favor of new funtions where you can also specify + the fx_group the effect would apply. + The behavior of the set_* variants was to apply to all groups + so we pass -1 to the new functions as per documentation. + https://www.fluidsynth.org/api/group__chorus__effect.html#ga3c48310eecdca9cd338799d19f19c32d + and + https://www.fluidsynth.org/api/group__reverb__effect.html#gacb7917564c988cf54f2e35189b509c8e + and the introduction of the change: + https://github.com/FluidSynth/fluidsynth/pull/673 + Part-of: + +2022-07-08 02:24:56 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11_private.h: + * gst-libs/gst/d3d11/gstd3d11memory.cpp: + * sys/d3d11/gstd3d11compositor.cpp: + * sys/d3d11/gstd3d11convert.cpp: + * sys/d3d11/gstd3d11converter.cpp: + * sys/d3d11/gstd3d11decoder.cpp: + * sys/d3d11/gstd3d11deinterlace.cpp: + * sys/d3d11/gstd3d11overlaycompositor.cpp: + * sys/d3d11/gstd3d11pluginutils.cpp: + * sys/d3d11/gstd3d11testsrc.cpp: + * sys/d3d11/gstd3d11window.cpp: + * sys/d3d11/gstd3d11window_corewindow.cpp: + * sys/d3d11/gstd3d11window_dummy.cpp: + * sys/d3d11/gstd3d11window_swapchainpanel.cpp: + * sys/d3d11/gstd3d11window_win32.cpp: + d3d11: Use scoped device lock + Make code simpler and more deadlock-free + Part-of: + +2022-07-08 18:53:01 +0900 Seungha Yang + + * sys/qsv/gstqsvencoder.cpp: + qsvencoder: Fix for latency report when B-frame is enabled + QSV runtime will introduce additional delay when B-frame is enabled + Part-of: + +2022-07-08 19:05:19 +0900 Seungha Yang + + * sys/qsv/gstqsvencoder.cpp: + qsvencoder: Do not query again if previous call succeeded + Don't need to query multiple times + Part-of: + +2022-07-08 03:38:30 +0900 Seungha Yang + + * sys/d3d11/gstd3d11screencapture.cpp: + * sys/d3d11/gstd3d11screencapture.h: + * sys/d3d11/gstd3d11screencapturesrc.cpp: + d3d11screencapturesrc: Set colorimetry to caps + Make use of reported DXGI colorspace if possible + Part-of: + +2022-07-08 20:11:00 +0900 Seungha Yang + + * sys/d3d11/gstd3d11pluginutils.cpp: + d3d11: Update colorspace map + Map DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P709 to sRGB colorimetry + Part-of: + +2022-07-08 04:37:33 +0900 Seungha Yang + + * sys/d3d11/gstd3d11pluginutils.cpp: + * sys/d3d11/gstd3d11pluginutils.h: + d3d11: Add an utility method for DXGI colorspace conversion + Add a method for DXGI_COLOR_SPACE_TYPE -> GstVideoColorimetry conversion + Part-of: + +2022-07-08 01:30:13 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11utils.cpp: + d3d11: Serialize ensure_element_data() call + It can be called any time from random thread. Thus, multiple + device objects can be created for the same physical device + if the call is not serialized, that's not a scenario we expect. + Part-of: + +2022-07-07 02:17:56 +0900 Seungha Yang + + * gst/proxy/gstproxysink.c: + proxysink: Fix GstProxySrc leak + Clear weak pointer to peer src when disposing. + Part-of: + +2022-07-06 03:14:25 +0900 Seungha Yang + + * gst/proxy/gstproxysink.c: + * gst/proxy/gstproxysink.h: + * tests/check/elements/proxysink.c: + * tests/check/meson.build: + proxysink: Make sure stream-start and caps events are forwarded + There might be a sequence of event and buffer flow: + - Got stream-start/caps/segment events + - Got flush events + - And then buffers with a new segment event + In the above case, stream-start and caps event might not be reached to + peer proxysrc if peer proxysrc is not ready to receive them. + Part-of: + +2022-03-04 14:28:21 +1100 Matthew Waters + + * ext/webrtc/gstwebrtcice.c: + webrtc: implement support for asynchronous host resolution + Doesn't block anymore if a mdns host resolution takes multiple seconds + to complete in e.g. stun/turn/ice candidate usage. + Part-of: + +2022-07-04 22:27:34 +0900 Seungha Yang + + * sys/d3d11/gstd3d11converter.cpp: + * sys/d3d11/gstd3d11converter.h: + d3d11converter: Remove convert() method + Expose only single convert_buffer() method. It's safer approach than + passing arbitrary list of SRV/RTV pointers. + Part-of: + +2022-07-04 22:26:19 +0900 Seungha Yang + + * sys/d3d11/gstd3d11testsrc.cpp: + d3d11testsrc: Use convert_buffer() method + Part-of: + +2022-07-04 22:01:49 +0900 Seungha Yang + + * sys/d3d11/gstd3d11compositor.cpp: + * sys/d3d11/gstd3d11videoprocessor.cpp: + * sys/d3d11/gstd3d11videoprocessor.h: + * sys/d3d11/gstd3d11videosink.cpp: + * sys/d3d11/gstd3d11window.h: + * sys/d3d11/meson.build: + d3d11: Remove video processor + Processing using ID3D11VideoProcessor was integrated into + GstD3D11Converter and GstD3D11VideoProcessor implementation is + not used anymore. + Part-of: + +2022-07-04 21:57:42 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11_private.h: + * gst-libs/gst/d3d11/gstd3d11memory.cpp: + * gst-libs/gst/d3d11/gstd3d11memory.h: + * sys/d3d11/gstd3d11window.cpp: + * sys/d3d11/gstd3d11window_dummy.cpp: + * tests/examples/d3d11/d3d11videosink-appsrc.cpp: + d3d11memory: Update alloc_wrapped() API to avoid staging texture alloc + Add size parameter and use it for CPU accessible memory size + instead of allocating staging texture per API call. + Part-of: + +2022-06-30 11:04:29 +0200 Ignazio Pillai + + * sys/wasapi/gstwasapiutil.c: + wasapi: Implement default audio channel mask + Some multichannel capture devices does not provide a channel mask value + which will result in a pipeline failure due to the empty channel mask. + Implemented the same fix used for wasapi2 + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1204 + Part-of: + +2022-07-03 01:22:10 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.cpp: + * sys/d3d11/gstd3d11window.cpp: + * sys/d3d11/gstd3d11window.h: + * sys/d3d11/gstd3d11window_dummy.cpp: + * sys/d3d11/gstd3d11window_win32.cpp: + d3d11videosink: Add support for rotation + Adding "rotate-method" property + Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1396 + Part-of: + +2022-07-03 01:18:19 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.cpp: + * sys/d3d11/gstd3d11videosink.h: + d3d11videosink: Protect window with lock at every place + Access to the object should be thread safe to support runtime + property update + Part-of: + +2022-07-02 04:23:41 +0900 Seungha Yang + + * sys/d3d11/gstd3d11basefilter.cpp: + * sys/d3d11/gstd3d11convert.cpp: + d3d11convert: Add support for GstVideoOrientationMethod + Add flip/rotation support via GstVideoDirectionInterface + Part-of: + +2022-07-02 02:15:00 +0900 Seungha Yang + + * sys/d3d11/gstd3d11converter.cpp: + d3d11converter: Add support for GstVideoOrientationMethod + Shader can handle rotation/flip with other conversions + at once in a single pipeline, and depending on device + capability, videoprocessor may support it too. + Part-of: + +2022-07-01 23:49:49 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.cpp: + * sys/d3d11/gstd3d11window.cpp: + * sys/d3d11/gstd3d11window.h: + * sys/d3d11/gstd3d11window_dummy.cpp: + d3d11videosink: Use single GstD3D11Converter object + GstD3D11Converter supports videoprocessor and texture upload. + Part-of: + +2022-07-01 21:35:15 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11_private.h: + * gst-libs/gst/d3d11/gstd3d11memory.cpp: + d3d11memory: Add private method for texture wrapped memory allocation + Unlike public method gst_d3d11_allocator_alloc_wrapped(), newly + added method by this commit will not calculate CPU accessible memory + size, since staging texture must be allocated to calculate the size. + Part-of: + +2022-07-01 21:20:02 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11_private.h: + * sys/d3d11/gstd3d11pluginutils.h: + d3d11: Use library private header in plugin + Part-of: + +2022-07-01 20:47:37 +0900 Seungha Yang + + * sys/d3d11/gstd3d11compositor.cpp: + d3d11compositor: Use single GstD3D11Converter object + ... and remove unnessary videoprocessor/upload/copy code + Part-of: + +2022-07-01 04:12:23 +0900 Seungha Yang + + * sys/d3d11/gstd3d11convert.cpp: + d3d11convert: Add border-color property + Use user specified border-color instead of black color + Part-of: + +2022-07-01 20:13:29 +0900 Seungha Yang + + * sys/d3d11/gstd3d11convert.cpp: + d3d11convert: Use single GstD3D11Converter object + ... and don't use GstD3D11VideoProcessor. Now GstD3D11Converter will + be able to convert using videoprocessor, and texture upload is also supported by + GstD3D11Converter. All the noisy code can be removed therefore. + Part-of: + +2022-06-22 02:44:26 +0900 Seungha Yang + + * sys/d3d11/gstd3d11compositor.cpp: + * sys/d3d11/gstd3d11convert.cpp: + * sys/d3d11/gstd3d11converter.cpp: + * sys/d3d11/gstd3d11converter.h: + * sys/d3d11/gstd3d11testsrc.cpp: + * sys/d3d11/gstd3d11window.cpp: + * sys/d3d11/gstd3d11window_dummy.cpp: + d3d11converter: Add support conversion using videoprocessor + * Add videoprocessor feature to d3d11converter, in order to unifiy + conversion flow. + * Add convert_buffer() method to support automatic shader/videoprocessor + selection. The method also supports texture upload if input memory + cannot be used for conversion (e.g., system memory or so) + Part-of: + +2022-06-21 23:43:46 +0900 Seungha Yang + + * sys/d3d11/gstd3d11overlaycompositor.cpp: + * sys/d3d11/gstd3d11overlaycompositor.h: + * sys/d3d11/gstd3d11window.cpp: + * sys/d3d11/gstd3d11window_dummy.cpp: + d3d11overlaycompositor: Objectify overlay render implementation + Be consistent with other implementations + Part-of: + +2022-06-21 22:44:55 +0900 Seungha Yang + + * sys/d3d11/gstd3d11compositor.cpp: + * sys/d3d11/gstd3d11convert.cpp: + * sys/d3d11/gstd3d11pluginutils.cpp: + * sys/d3d11/gstd3d11pluginutils.h: + * sys/d3d11/gstd3d11window.cpp: + * sys/d3d11/gstd3d11window_dummy.cpp: + d3d11: Don't use const pointer to GstDxgiColorSpace + Instead, fill values of passed GstDxgiColorSpace struct + Part-of: + +2022-06-28 16:40:55 +0300 Sebastian Dröge + + * sys/decklink/gstdecklink.h: + * sys/decklink/gstdecklinkvideosink.cpp: + decklinkvideosink: Pass video frames directly to the Decklink SDK without copying + If the video frame is stored in PBO memory then we need to copy anyway as + it might be stored in CPU-accessible GPU memory that can't be accessed + from the Decklink driver. + Part-of: + +2022-05-10 14:11:06 +0800 Vincent Cheah Beng Keat + + * sys/msdk/gstmsdkdec.c: + * sys/msdk/gstmsdkmjpegdec.c: + * sys/msdk/meson.build: + msdkmjpegdec: Add support for error report + Part-of: + +2022-06-23 01:10:38 +0900 Seungha Yang + + * sys/nvcodec/gstnvencoder.cpp: + * sys/nvcodec/gstnvencoder.h: + * sys/nvcodec/gstnvh264encoder.cpp: + * sys/nvcodec/gstnvh264encoder.h: + * sys/nvcodec/gstnvh265encoder.cpp: + * sys/nvcodec/gstnvh265encoder.h: + * sys/nvcodec/plugin.c: + nvencoder: Add support for dynamic GPU device selection + Adding nvautogpu{h264,h265}enc class which will accept upstream logical + GPU device object (GstCudaContext or GstD3D11Device) instead of + using pre-assigned GPU instance. + If upstream logical GPU device object is not NVENC compatible + (e.g., D3D11 device of non-NVIDIA GPU) or it's system memory, + then user specified "cuda-device-id" or "adapter-luid" property + will be used for GPU device selection. + Part-of: + +2022-06-27 20:50:15 +0900 Seungha Yang + + * gst-libs/gst/cuda/gstcudautils.c: + cuda: Protect gst_cuda_ensure_element_context() with lock + Serialize the order of context setup since it can be called + from multiple threads + Part-of: + +2022-06-30 16:45:46 +0900 Seungha Yang + + * gst-libs/gst/cuda/gstcudamemory.c: + * sys/nvcodec/gstcudabasefilter.c: + * sys/nvcodec/gstcudaformat.h: + cuda: Add YUY2 and UYVY formats for GL interop + Those formats are not supported conversion formats by CUDA convert/scale elements + but would be useful for GL <-> CUDA interop use case. + Part-of: + +2022-06-30 17:47:05 +0900 Seungha Yang + + * sys/nvcodec/gstcudamemorycopy.c: + cudadownload: Passthrough in case of CUDA -> SYSTEM + GstCudaMemory supports CPU access via CUDA pinned host memory already + and it would show faster memory transfer performance between + GPU and CPU than copying from/to normal system memory. + If downstream supports video meta, we can passthrough CUDA memory. + Part-of: + +2022-06-30 09:09:02 +0300 Sebastian Dröge + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Reject caps that are not valid for creating an SDP media. + Part-of: + +2022-04-22 16:37:34 +0200 Corentin Damman + + * sys/nvcodec/gstcudaformat.h: + cudaformat: add support for planar 4:2:2 YUV formats in CUDA D3D11 interop + Part-of: + +2022-04-22 15:58:13 +0200 Corentin Damman + + * gst-libs/gst/cuda/gstcudamemory.c: + * sys/nvcodec/gstcudaformat.h: + cudamemory: add support for planar 4:2:2 YUV formats + Part-of: + +2021-06-22 14:43:29 +0200 Benjamin Gaignard + + * sys/v4l2codecs/gstv4l2decoder.c: + v4l2codecs: enumerate all possible formats + Some decoder may also allow to (down) scale the decoded video. + Use VIDIOC_ENUM_FRAMESIZES iotcl to enumerate the possible output + formats resolutions. + Part-of: + +2022-06-26 22:26:29 +0900 Seungha Yang + + * sys/nvcodec/gstnvav1dec.c: + * sys/nvcodec/gstnvdecoder.h: + * sys/nvcodec/gstnvh264dec.c: + * sys/nvcodec/gstnvh264dec.h: + * sys/nvcodec/gstnvh265dec.c: + * sys/nvcodec/gstnvh265dec.h: + * sys/nvcodec/gstnvvp8dec.c: + * sys/nvcodec/gstnvvp8dec.h: + * sys/nvcodec/gstnvvp9dec.c: + * sys/nvcodec/gstnvvp9dec.h: + nvcodec: Add cuda-device-id read-only property to stateless decoders + ... and remove unnecessary intermediate subclass from class hierarchy + Part-of: + +2022-06-26 21:09:50 +0900 Seungha Yang + + * sys/nvcodec/gstnvdec.c: + nvcodec: Add cuda-device-id read-only property to CUVID decoders + Similar to the other hardware decoder plugins, provides assigned + device id via property + Part-of: + +2022-06-29 10:55:13 +0100 Tim-Philipp Müller + + * 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: + +2022-06-29 00:31:01 +0900 Seungha Yang + + * sys/d3d11/gstd3d11convert.cpp: + d3d11convert: Add support for GstVideoCropMeta + Performs crop, scale, and color space conversion all in + a single render pipeline. Note that cropping related property is not + added in this element (which will make negotiation very complicated), + but user can configure videocrop element for crop meta to be attached + on each buffer. + Part-of: + +2022-06-28 17:40:56 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.cpp: + d3d11videosink: Fix for force-aspect-ratio setting when rendering on shared texture + Set specified force-aspect-ratio value on window object + in case of shared texture rendering as well + Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1304 + Part-of: + +2022-06-26 06:39:54 +0900 Seungha Yang + + * sys/mediafoundation/gstmfvideoencoder.cpp: + * sys/mediafoundation/gstmfvideoencoder.h: + mfvideoenc: Fix broken encoding when resolution is not an even number + Width and height values of 4:2:0 subsampled YUV format should be even number, + and if it's not the case, there should be padding which is not a contiguous memory layout. + Do copy input frames to MediaFoundation's memory in that case for now. + Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1165 + Part-of: + +2022-06-28 01:29:06 +0100 Tim-Philipp Müller + + * ext/opus/gstopusheader.h: + dv, opusparse: fix duplicate symbols in static build + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1262 + Part-of: + +2022-06-27 04:07:04 +0900 Seungha Yang + + * sys/d3d11/plugin.cpp: + d3d11: Enumerate devices via native DXGI API + D3D11CreateDevice() can fail for some reason (e.g., buggy GPU driver) + and then gst_d3d11_device_new() will return nullptr. + Use DXGI API directly instead of relying on the gst_d3d11_device_new() + Part-of: + +2022-06-25 01:15:17 +0900 Seungha Yang + + * tests/examples/d3d11/d3d11videosink-appsrc.cpp: + * tests/examples/d3d11/meson.build: + examples: Add an example for application texture sharing + This example shows GstD3D11BufferPool usage and a way of + D3D11 texture sharing between application and GStreamer via appsrc. + Part-of: + +2022-06-24 07:06:00 +0900 Seungha Yang + + * tests/examples/d3d11/d3d11decoder-appsink.cpp: + * tests/examples/d3d11/meson.build: + examples: Add d3d11decoder zero-copy rendering example + This example code demonstrates D3D11 device sharing between + application and GStreamer. Application can access texture + using appsink and it can be rendered on application's window without + any copy operation. + Part-of: + +2022-06-24 22:17:28 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11utils.cpp: + * gst-libs/gst/d3d11/gstd3d11utils.h: + d3d11: Add a helper method for GstContext creation + Add gst_d3d11_context_new() method for application to create + GstContext using GstD3D11Device. + Part-of: + +2022-06-24 01:00:00 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11memory.cpp: + * gst-libs/gst/d3d11/gstd3d11memory.h: + d3d11memory: Add support for wrapping application texture + Add gst_d3d11_allocator_alloc_wrapped() method to support wrapping + application texture using GstD3D11Memory without copy. + Part-of: + +2022-06-24 01:25:07 +0900 Seungha Yang + + * gst-libs/gst/d3d11/d3d11-prelude.h: + * gst-libs/gst/d3d11/gstd3d11.h: + * gst-libs/gst/d3d11/gstd3d11_fwd.h: + * gst-libs/gst/d3d11/gstd3d11_private.h: + * gst-libs/gst/d3d11/gstd3d11bufferpool.cpp: + * gst-libs/gst/d3d11/gstd3d11bufferpool.h: + * gst-libs/gst/d3d11/gstd3d11config.h.meson: + * gst-libs/gst/d3d11/gstd3d11device.cpp: + * gst-libs/gst/d3d11/gstd3d11device.h: + * gst-libs/gst/d3d11/gstd3d11format.cpp: + * gst-libs/gst/d3d11/gstd3d11format.h: + * gst-libs/gst/d3d11/gstd3d11memory.cpp: + * gst-libs/gst/d3d11/gstd3d11memory.h: + * gst-libs/gst/d3d11/gstd3d11utils.cpp: + * gst-libs/gst/d3d11/gstd3d11utils.h: + * gst-libs/gst/d3d11/meson.build: + d3d11: Install library headers + Our Direct3D11 abstraction layer has been improved and + it gained good shape from API point of view. + Also, On Windows, GstD3D11 has various advantages over GstGL + in terms of compatibility/stability/feature/performance. + Note that WGL implementation is known to be buggy for some + drivers/vendors/scenario (that's a reason why Google implemented ANGLE). + Moreover, GstGL is not fully optimized for Windows unfortunately. + It's the time to open this interface to application developers + for various optimized processing using our Direct3D11 + infrastructure. + Part-of: + +2022-06-24 01:21:48 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11bufferpool.cpp: + * gst-libs/gst/d3d11/gstd3d11memory.cpp: + * gst-libs/gst/d3d11/gstd3d11memory.h: + * sys/amfcodec/gstamfencoder.cpp: + * sys/d3d11/gstd3d11compositor.cpp: + * sys/d3d11/gstd3d11convert.cpp: + * sys/d3d11/gstd3d11decoder.cpp: + * sys/d3d11/gstd3d11deinterlace.cpp: + * sys/d3d11/gstd3d11screencapturesrc.cpp: + * sys/d3d11/gstd3d11testsrc.cpp: + * sys/d3d11/gstd3d11upload.cpp: + * sys/d3d11/gstd3d11videosink.cpp: + * sys/nvcodec/gstnvencoder.cpp: + * sys/qsv/gstqsvallocator_d3d11.cpp: + * sys/qsv/gstqsvdecoder.cpp: + * sys/qsv/gstqsvencoder.cpp: + d3d11: Update gst_d3d11_allocation_params_new() interface + Define GST_D3D11_ALLOCATION_FLAG_DEFAULT (0) value instead of + casting enum type everywhere. And pass D3D11_RESOURCE_MISC_FLAG value + Part-of: + +2022-06-27 12:06:50 -0400 U. Artie Eoff + + * sys/va/gstvavpp.c: + va: postproc: add scale-method property + Part-of: + +2022-06-27 11:54:28 -0400 U. Artie Eoff + + * sys/va/gstvafilter.c: + * sys/va/gstvafilter.h: + * sys/va/gstvavpp.c: + va: filter/postproc: move unconditional props to vavpp + Only conditional/dynamic properties should be installed/handled + by vafilter. Thus, move and install the unconditional/static + properties in vavpp. + Part-of: + +2022-06-23 11:39:57 -0400 U. Artie Eoff + + * sys/va/gstvacompositor.c: + * sys/va/gstvafilter.c: + * sys/va/gstvafilter.h: + va: compositor/filter: use scale method setter + Use the filter's scale method member instead of the sample's member. + Removes the filter_flags member from the composite sample. + Part-of: + +2022-06-23 11:11:16 -0400 U. Artie Eoff + + * sys/va/gstvafilter.c: + * sys/va/gstvafilter.h: + va: filter: add scale method field and setter + Part-of: + +2022-01-21 21:33:52 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvabasedec.h: + * sys/va/gstvajpegdec.c: + * sys/va/gstvajpegdec.h: + * sys/va/gstvaprofile.c: + * sys/va/meson.build: + * sys/va/plugin.c: + va: Add vajpegdec element. + Part-of: + +2022-06-24 19:42:36 +0200 Víctor Manuel Jáquez Leal + + * gst-libs/gst/va/gstva.h: + * gst-libs/gst/va/gstvaallocator.c: + * gst-libs/gst/va/gstvaallocator.h: + * sys/va/gstvabasedec.c: + * sys/va/gstvabasedec.h: + va: allocator: Add hack for no fourcc when surface creation. + This patch adds general mechanism for handling specific hacks. In this + case for jpeg decoder in i965 driver, which cannot create surfaces + with fourcc specified. + From jpeg decoder to the allocator, which creates the surfaces, + there's a non-simple path: basedec pseudo-class adds a hacks guint32 + which will be set by actual elements (vajpegdec, in this case) and + basedec will always set the hack to the allocator when the allocator + is instantiated. + Part-of: + +2022-06-24 19:54:51 +0200 Víctor Manuel Jáquez Leal + + * gst-libs/gst/va/gstvavideoformat.c: + va: Add RGBP format definition. + Part-of: + +2022-04-28 13:16:03 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvacaps.c: + va: caps: Add jpeg fields in coded caps. + Given the supported rt formats in a profile/entrypoint config it's + possible to know the supported JPEG colorspace and subsampling. This + patch adds this information in coded caps to a safer autoplugging + after jpegparser. + Part-of: + +2022-01-17 15:43:47 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstjpegdecoder.c: + * sys/va/gstjpegdecoder.h: + * sys/va/meson.build: + va: Add jpegdecoder base class. + This base class is intented for hardware accelerated decoders, but since + only VA uses it, it will be kept internally in va plugin. + It follows the same logic as the others video decoders in the library but. + as JPEG are independet images, there's no need to handle a DBP so no need + of a picture object. Instead a scan object is added with all the structures + required to decode the image (huffman and quant tables, mcus, etc.). + Part-of: + +2022-06-27 12:36:29 +0200 Víctor Manuel Jáquez Leal + + * sys/va/meson.build: + va: build: Remove duplicated source. + Part-of: + +2022-06-27 19:58:58 +0900 Seungha Yang + + * sys/nvcodec/gstcudamemorycopy.c: + cudamemorycopy: Make sure writable caps before removing fields + The caps to be modified may not be writable when D3D11/GL/NVMM + are all disabled. + Part-of: + +2022-06-25 19:50:10 +0100 Tim-Philipp Müller + + * 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: + +2022-06-23 14:31:10 +0200 Víctor Manuel Jáquez Leal + + * gst-libs/gst/va/gstvaallocator.c: + va: allocator: Use always lseek to get dmabuf size. + Gallium drivers historically have reported strange dmabuf sizes, from always + zero to the whole frame (multiple fds). The simplest solution is to use lseek + SEEK_END to get the prime descriptor size. + Also the allocator raises a warning if both values differ in order to report + it to driver. + Part-of: + +2022-06-08 09:02:52 -0400 Nicolas Dufresne + + * gst-libs/gst/va/gstvaallocator.c: + va: allocator: Fix translation of VADRMPRIMESurfaceDescriptor + VADRMPRIMESurfaceDescriptor structure describes the offsets from the + point of view of the specific handle (DMABuf). While GstVideoInfo + (and the meta) describes offsets from the point of the view of the + GstBuffer, an aggregate of all the GstMemory (1 per handle). + This changes combined with [Mesa Fix](https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16813) + fixes decoding failure with AMD driver. + Fixes #1223 + Part-of: + +2022-06-23 21:43:11 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11.h: + * gst-libs/gst/d3d11/gstd3d11stagingbufferpool.cpp: + * gst-libs/gst/d3d11/gstd3d11stagingbufferpool.h: + * gst-libs/gst/d3d11/meson.build: + * sys/amfcodec/gstamfencoder.cpp: + * sys/d3d11/gstd3d11compositor.cpp: + * sys/d3d11/gstd3d11decoder.cpp: + * sys/d3d11/gstd3d11download.cpp: + * sys/d3d11/gstd3d11screencapturesrc.cpp: + * sys/d3d11/gstd3d11testsrc.cpp: + * sys/d3d11/gstd3d11upload.cpp: + * sys/d3d11/gstd3d11videosink.cpp: + * sys/qsv/gstqsvallocator_d3d11.cpp: + * sys/qsv/gstqsvencoder.cpp: + d3d11: Revert staging buffer pool implementation + The staging buffer pool implementation was added to improve + throughput performance since we can avoid per-frame + CPU copy operation via staging texture but it turned out that + we can not make it thread safe. See + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1182 + Reverting the staging texture implementation as it does not show + any visible value. + Part-of: + +2022-06-23 21:35:23 +0900 Seungha Yang + + * sys/qsv/gstqsvdecoder.cpp: + qsvdecoder: Fix system memory alignment + Do right padding, not left + Part-of: + +2022-06-23 21:41:24 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.cpp: + d3d11decoder: Fix texture download + Stride applied to src/dst was reversed + Part-of: + +2022-06-16 17:02:43 +0200 Víctor Manuel Jáquez Leal + + * gst/jpegformat/gstjpegparse.c: + jpegparse: Add YUV440 sampling support. + Found some samples with this sampling, so in order to support it, + JPEG2000 header cannot be used anymore, a this patch also adds the + enums for each supported colorspace and sampling, avoiding hacks. + Part-of: + +2022-06-16 16:33:14 +0200 Víctor Manuel Jáquez Leal + + * gst-libs/gst/va/gstvaallocator.c: + * sys/va/gstvafilter.c: + va: Use driver implementation macro rather than function. + Part-of: + +2022-06-18 10:36:53 +0800 He Junyan + + * gst/videoparsers/gsth265parse.c: + h265parse: Fix uninitialized width and height when update src caps. + The commit b90d0274 introduces uninitialized width and height when we + consider to change the "pixel-aspect-ratio" for some interlaced stream. + We need to check the resolution in the src caps, and if no resolution + info found, there is no need to consider the aspect ratio. + Part-of: + +2022-06-21 20:04:15 +0900 Seungha Yang + + * sys/d3d11/gstd3d11deinterlace.cpp: + * sys/d3d11/gstd3d11testsrc.cpp: + * sys/d3d11/gstd3d11window.cpp: + d3d11: Fix some typos + Fix up spelling and d3d11testsrc class meta. + Part-of: + +2022-06-18 20:14:22 +0900 Seungha Yang + + * sys/d3d11/gstd3d11compositor.cpp: + * sys/d3d11/gstd3d11compositor.h: + * sys/d3d11/gstd3d11compositorbin.cpp: + * sys/d3d11/gstd3d11compositorbin.h: + * sys/d3d11/meson.build: + * sys/d3d11/plugin.cpp: + d3d11compositor: Performance optimization + Removing glvideomixer-like nuance (it was initially referenced) + and rewriting element since it's not an optimal design at all + from performance point of view. + * Remove wrapper bin (and internal conversion/upload/download elements) + which will waste CPU/GPU resources. Conversion/blending can be done by the + d3d11compositor element at once. + * Add support YUV blending without RGB conversion. + The RGB <-> YUV conversion is completely unnecessary since YUV textures + support blending as well. + * Remove complicated blending operation properties since it's hard + to use from application point of view. Instead, adding "operator" property + like what compositor element does. + Part-of: + +2022-06-18 20:40:40 +0900 Seungha Yang + + * sys/d3d11/gstd3d11converter.cpp: + d3d11converter: Fix alpha factor update + converter should set entire constant buffer values since it's mapped + with write-discard flag + Part-of: + +2022-06-02 14:22:21 +0200 Robert Mader + + * docs/plugins/gst_plugins_cache.json: + * ext/wayland/gstwaylandsink.c: + * ext/wayland/gstwaylandsink.h: + * gst-libs/gst/wayland/gstwlwindow.c: + * gst-libs/gst/wayland/gstwlwindow.h: + gstwaylandsink: Add rotate-method property + Similar to and inspired by glimagesink and gtkglsink. + Using the Wayland buffer transform API allows to offload + rotate operations to the Wayland compositor. This can have + several advantages: + - The Wayland compositor may be able to use hardware plane + capabilities to do the rotation. + - In case of pre-rotated content on rotated outputs the + rotations may equal out, potentially allowing the + compositor to use hardware planes even if they don't + support rotate operations. + Part-of: + +2022-06-18 04:05:53 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.h: + d3d11decoder: Check 16K resolution support + 16K decoding is supported by some GPUs + Part-of: + +2022-06-17 05:11:08 +0900 Seungha Yang + + * sys/d3d11/gstd3d11av1dec.cpp: + * sys/d3d11/gstd3d11decoder.cpp: + * sys/d3d11/gstd3d11decoder.h: + * sys/d3d11/gstd3d11h264dec.cpp: + * sys/d3d11/gstd3d11h265dec.cpp: + * sys/d3d11/gstd3d11mpeg2dec.cpp: + * sys/d3d11/gstd3d11vp8dec.cpp: + * sys/d3d11/gstd3d11vp9dec.cpp: + d3d11decoder: Add support for non-zero crop-{x,y} position + AVC and HEVC define crop rectangle and the x/y coordinates might + not be zero. This commit will address the non-zero x/y offset coordinates + via GstVideoCropMeta if downstream supports the meta and d3d11 memory. + Otherwise decoder will copy decoded texture into output frame. + Part-of: + +2022-06-17 02:45:51 +0900 Seungha Yang + + * sys/d3d11/gstd3d11convert.cpp: + * sys/d3d11/gstd3d11converter.cpp: + d3d11converter: Implement filling border color + Equivalent to GST_VIDEO_CONVERTER_OPT_BORDER_ARGB and + GST_VIDEO_CONVERTER_OPT_FILL_BORDER options of GstVideoConverter + Part-of: + +2022-06-16 02:18:43 +0900 Seungha Yang + + * sys/d3d11/gstd3d11compositor.cpp: + * sys/d3d11/gstd3d11convert.cpp: + * sys/d3d11/gstd3d11converter.cpp: + * sys/d3d11/gstd3d11converter.h: + * sys/d3d11/gstd3d11testsrc.cpp: + * sys/d3d11/gstd3d11window.cpp: + * sys/d3d11/gstd3d11window.h: + * sys/d3d11/gstd3d11window_dummy.cpp: + * sys/d3d11/plugin.cpp: + d3d11converter: Objectify converter + ... and set conversion options via property + Part-of: + +2022-06-16 00:52:16 +0900 Seungha Yang + + * sys/d3d11/gstd3d11shader.cpp: + * sys/d3d11/gstd3d11shader.h: + d3d11shader: Remove GstD3D11Quad helper object + It's not very generic to be used for various scenario. Use native D3D11 + APIs directly instead. + Part-of: + +2022-06-16 00:50:12 +0900 Seungha Yang + + * sys/d3d11/gstd3d11compositor.cpp: + d3d11compositor: Don't use GstD3D11Quad + The helper object will be removed + Part-of: + +2022-06-15 23:46:27 +0900 Seungha Yang + + * sys/d3d11/gstd3d11overlaycompositor.cpp: + d3d11overlaycompositor: Fix HLSL compiler warning + warning X3206: 'Sample': implicit truncation of vector type + And don't use GstD3D11Quad since it will result in redundant API calls + Part-of: + +2022-02-01 23:46:43 +0100 Mathieu Duponchelle + + * docs/plugins/gst_plugins_cache.json: + * ext/closedcaption/gstcccombiner.c: + * ext/closedcaption/gstcccombiner.h: + cccombiner: expose output-padding property + When schedule=true and output-padding=false, cccombiner will not + inject padding in the output closed caption meta stream. + The property has no effect when schedule=false. + Part-of: + +2022-06-15 15:06:20 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Limit sink query to sink pads + This allows the reception of streams that don't exactly match + the codec preferences. In particular, the ssrc in the codec preferences + is local sender SSRC, the other side is expected to send a different SSRC. + Part-of: + +2022-06-08 19:18:48 +0300 Vivia Nikolaidou + + * gst/videoparsers/gsth265parse.c: + 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: + +2021-05-19 16:03:22 +0200 Stéphane Cerveau + + * ext/srt/gstsrtsrc.c: + * ext/srt/gstsrtsrc.h: + srtsrc: add "keep-listening" property to avoid EOS on disconnect + The property 'keep-listening' avoids EOS + when the remote client disconnects. + It can be useful to a keep a pipeline alive + when the srt connection drops remotely. + Part-of: + +2021-05-19 16:00:13 +0200 Stéphane Cerveau + + * ext/srt/gstsrtsrc.c: + srtsrc: remove dead code + Remove code useless since + 132e3a1af9deb1d2cdf84d22b954967207bcc03a + Part-of: + +2022-05-19 05:24:08 +0900 Seungha Yang + + * sys/qsv/gstqsvh264dec.cpp: + qsvh264dec: Use newly added avcC data parsing API + Use gst_h264_parser_parse_decoder_config_record() method to parse + codec_data. + Part-of: + +2022-05-19 05:06:04 +0900 Seungha Yang + + * gst/videoparsers/gsth264parse.c: + h264parse: Use newly added avcC data parsing API + Use gst_h264_parser_parse_decoder_config_record() method to parse + codec_data. + Part-of: + +2022-05-19 04:49:36 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264decoder.c: + h264decoder: Use newly added avcC data parsing API + Use gst_h264_parser_parse_decoder_config_record() method to parse + codec_data. + Part-of: + +2022-05-19 04:25:38 +0900 Seungha Yang + + * gst-libs/gst/codecparsers/gsth264parser.c: + * gst-libs/gst/codecparsers/gsth264parser.h: + * tests/check/libs/h264parser.c: + h264parser: Add an API for AVCDecoderConfigurationRecord parsing + Add a method for AVC configuration date parsing + Part-of: + +2022-06-15 10:07:26 +0300 Sebastian Dröge + + * sys/decklink/gstdecklink.cpp: + decklinkvideosink: Fix selection of > PAL widescreen modes + Part-of: + +2022-06-07 16:30:36 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvabasedec.c: + va: basedec: Select output format with the used chroma in decoder. + Currently, video format is decided with downstream caps intersection, + but that's not correct since chroma is not considered. The video + decoders have to decide the output format given the used chroma, not + by the downstream caps negotiation. + This patch changes that. Still, caps feature is selected by caps + negotiation, then, with the preferred caps feature, the output format + is search within that caps feature. + Part-of: + +2022-05-23 11:41:17 +1000 Matthew Waters + + * docs/plugins/gst_plugins_cache.json: + * ext/vulkan/gstvulkan.c: + * ext/vulkan/meson.build: + * ext/vulkan/vkoverlaycompositor.c: + * ext/vulkan/vkoverlaycompositor.h: + vulkan: add vulkan overlay compositor element + Part-of: + +2022-05-23 11:26:24 +1000 Matthew Waters + + * gst-libs/gst/vulkan/gstvkfullscreenquad.c: + * gst-libs/gst/vulkan/gstvkfullscreenquad.h: + vkfullscreenquad: add support for disabling clearing + e.g. if drawing over the top of an existing image, we don'w want to + clear. + Part-of: + +2022-05-23 11:25:03 +1000 Matthew Waters + + * gst-libs/gst/vulkan/gstvkfullscreenquad.c: + * gst-libs/gst/vulkan/gstvkfullscreenquad.h: + vkfullscreenquad: support setting blend operations + Allows e.g. blending with an existing image. + Part-of: + +2022-05-23 11:24:04 +1000 Matthew Waters + + * gst-libs/gst/vulkan/gstvkfullscreenquad.c: + vkfullscreenaud: create the vulkan command pool upfront + Allows outside to reuse the same command buffer pool much more easily. + Part-of: + +2022-05-17 17:07:49 +1000 Matthew Waters + + * gst-libs/gst/vulkan/gstvkbuffermemory.h: + * gst-libs/gst/vulkan/gstvkbufferpool.h: + * gst-libs/gst/vulkan/gstvkcommandbuffer.h: + * gst-libs/gst/vulkan/gstvkdescriptorpool.h: + * gst-libs/gst/vulkan/gstvkdescriptorset.h: + * gst-libs/gst/vulkan/gstvkfence.h: + * gst-libs/gst/vulkan/gstvkimagebufferpool.h: + * gst-libs/gst/vulkan/gstvkimagememory.h: + * gst-libs/gst/vulkan/gstvkmemory.h: + * gst-libs/gst/vulkan/gstvkvideofilter.h: + vulkan: add some missing GAutoPtr definitions + Part-of: + +2022-05-17 16:32:09 +1000 Matthew Waters + + * gst-libs/gst/vulkan/gstvkimageview.h: + vulkan: remove unneeded #ifdef for GAutoPtr + Not necessary anymore as we depend on a new enough Glib version + Part-of: + +2022-05-17 13:22:33 +1000 Matthew Waters + + * ext/vulkan/gstvulkanelements.h: + * ext/vulkan/vkcolorconvert.h: + * ext/vulkan/vkdeviceprovider.h: + * ext/vulkan/vkdownload.h: + * ext/vulkan/vkimageidentity.h: + * ext/vulkan/vkshaderspv.h: + * ext/vulkan/vksink.h: + * ext/vulkan/vkupload.h: + * ext/vulkan/vkviewconvert.h: + vulkan: move element register definition to relevant element headers + Part-of: + +2022-06-13 03:29:11 +0900 Seungha Yang + + * sys/d3d11/gstd3d11converter.cpp: + * sys/d3d11/gstd3d11pluginutils.cpp: + * sys/d3d11/gstd3d11pluginutils.h: + d3d11converter: Add support for colorimetry conversion + Handle color primaries and gamma functions. + HDR <-> SDR conversion (tone mapping) should be implemented as well + but not a part of this patch. + Part-of: + +2022-06-14 03:15:42 +0900 Seungha Yang + + * sys/d3d11/gstd3d11convert.cpp: + d3d11convert: Don't passthrough if colorimetry conversion is required + Different input/output colorimetry requires conversion + Part-of: + +2022-06-14 00:24:41 +0900 Seungha Yang + + * sys/d3d11/gstd3d11pluginutils.cpp: + d3d11window: Use SDR colorspace whenever possible + PQ uses completely different light level scale + and it should not be used for SDR bt2020. + Part-of: + +2022-06-06 03:41:52 +0900 Seungha Yang + + * sys/d3d11/gstd3d11converter.cpp: + * sys/d3d11/gstd3d11converter.h: + * sys/d3d11/gstd3d11pluginutils.cpp: + * sys/d3d11/gstd3d11pluginutils.h: + d3d11converter: Rewrite conversion object + Rewriting GstD3D11Converter (equivalent to GstVideoConverter) + to optimize some conversion path and clean up. + * Extract YUV <-> RGB conversion matrix building method to + utils. It will be used by other implementation + * Use calculated offset values for YCbCr <-> YPbPr conversion + instead of hardcoded values + * Handle color range adjustment + * Move transform matrix building helper function to utils. + The method will be used by other elements + * Use single constant buffer. Multiple constatne buffer for + conversion pipeline is almost pointless + * Remove lots of duplicated HLSL code and split pixel shader + code path into sampling -> colorspace conversion -> + shader output packing + * Avoid floating point precision error around UV coordinates + * Optimize RGB -> YUV conversion path + Part-of: + +2022-05-24 10:40:26 +0200 Benjamin Gaignard + + * sys/v4l2codecs/gstv4l2format.c: + * sys/v4l2codecs/gstv4l2format.h: + * sys/v4l2codecs/linux/videodev2.h: + v4l2codecs: Add P010 pixel format + Copy V4L2_PIX_FMT_P010 define from linux header. + V4L2_PIX_FMT_P010 is the little endian definition of P010 so map + it GST_VIDEO_FORMAT_P010_10LE. + Add it v4l2 default video formats to allows v4l2 decoders to + enumerate and use it. + Part-of: + +2022-04-06 12:56:30 +0100 Tim-Philipp Müller + + * ext/gs/gstgscommon.cpp: + * gst/mpegtsdemux/mpegtsbase.c: + * gst/mxf/mxfdemux.c: + * meson.build: + * sys/d3d11/gstd3d11deinterlace.cpp: + * sys/va/vacompat.h: + Bump GLib requirement to >= 2.62 + Can't require 2.64 yet because of + https://gitlab.freedesktop.org/gstreamer/cerbero/-/issues/323 + Part-of: + +2022-06-08 10:42:18 +0300 Sebastian Dröge + + * docs/plugins/gst_plugins_cache.json: + * sys/decklink/gstdecklink.cpp: + * sys/decklink/gstdecklink.h: + decklink: Add support for 4K DCI, 8K/UHD2 and 8K DCI modes + Part-of: + +2022-06-02 06:06:48 +0900 Seungha Yang + + * sys/qsv/gstqsvallocator_d3d11.cpp: + qsvencoder: Do not copy if input is D3D11 texture + In case that input is D3D11 texture, QSV seems to work regardless + of the alignment. Actually the alignment requirement seems to make + only sense for system memory. + Other Intel GPU dependent implementations (new VA encoder, and MediaFoundation) + do not require such alignment nor other vendor specific ones (NVENC and AMF) + Part-of: + +2022-06-09 23:19:24 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.cpp: + d3d11decoder: Fix for alternate interlacing signalling + Don't set d3d11+interlace caps feature. None of d3d11 elements + support it + Part-of: + +2022-06-04 22:33:34 +0900 Seungha Yang + + * sys/d3d11/gstd3d11testsrc.cpp: + * sys/d3d11/gstd3d11testsrc.h: + * sys/d3d11/meson.build: + * sys/d3d11/plugin.cpp: + d3d11: Add d3d11testsrc element + Adding Direct3D11 based videotestsrc element + Part-of: + +2022-06-08 16:38:00 +0200 Mathieu Duponchelle + + * docs/meson.build: + -bad/docs: be more selective about header files to exclude + A few header files in -bad contain comments that start with the + /** gtk-doc pattern, but should not actually be parsed (and warned + about as such). + Previously, we were using far-reaching wildcard patterns to avoid + parsing those, but this had the unintended side effect of also + excluding legitimate files, and creating confusion when comments + were not parsed from those. + Switch to excluding specific files instead. + Part-of: + +2022-05-27 05:15:13 +1000 Jan Schmidt + + * sys/androidmedia/gstamc-constants.h: + * sys/androidmedia/gstamc.c: + * sys/androidmedia/gstamcvideoenc.c: + * sys/androidmedia/gstamcvideoenc.h: + amc: Add H.265 encoder mapping. + Add mime type mapping to enable the use of Android H.265 encoders + Part-of: + +2022-05-13 17:21:25 +0800 Mengkejiergeli Ba + + * sys/msdk/gstmsdkdec.c: + * sys/msdk/gstmsdkdec.h: + msdkdec: Decoder should use its own pool when downstream allocator is not recognizable + Msdkdec should use it own pool when the allocation from downstream query + is not any msdk_allocator (i.e. msdk_video_allocator, + msdk_dmabuf_allocator and msdk_system_allocator). Otherwise, when using + pipeline "msdkh264dec ! vah264enc !" to transcode a not 16-bit-aligned + stream (i.e. 1920x1080), the transcoding will fail due to the size + mismatch issue between decoder pool and encoder pool. + Part-of: + +2022-06-06 10:56:12 +0200 Víctor Manuel Jáquez Leal + + * docs/plugins/gst_plugins_cache.json: + va: Update plugin cache. + Part-of: + +2022-05-29 13:43:29 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvah264enc.c: + vah264enc: Guard logging functions + .. and use spec for rate control rather than static switch. + Part-of: + +2022-05-30 10:20:11 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvabaseenc.c: + * sys/va/gstvah264enc.c: + vah264enc: Support default and none rate control. + Part-of: + +2022-05-29 12:09:05 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvaencoder.c: + * sys/va/gstvaencoder.h: + * sys/va/gstvah264enc.c: + va: encoder: Rate control property. + Fixes: #1241 + Part-of: + +2022-05-30 11:26:24 +0100 Philippe Normand + + * docs/plugins/gst_plugins_cache.json: + * ext/webrtc/gstwebrtcbin.c: + * tests/check/elements/webrtcbin.c: + webrtcbin: Add a prepare-data-channel GObject signal + This new signal allows data-channel consumers to configure signal handlers on a + newly created data-channel, before any data or state change has been notified. + The webrtcin unit-tests were refactored to make use of this new signal. + Part-of: + +2022-05-16 16:43:57 +0100 Philippe Normand + + * ext/webrtc/webrtcdatachannel.c: + webrtcdatachannel: Chain to parent class constructed + And add a debug log statement. + Part-of: + +2022-06-02 10:32:28 -0400 Eric Knapp + + * docs/plugins/gst_plugins_cache.json: + * sys/decklink/gstdecklink.cpp: + * sys/decklink/gstdecklink.h: + * sys/decklink/gstdecklinkvideosink.cpp: + * sys/decklink/gstdecklinkvideosink.h: + decklinkvideosink: Add 3G-SDI Level A output support + Part-of: + +2022-06-04 15:05:05 +0800 He Junyan + + * gst-libs/gst/codecparsers/gsth264parser.c: + h264parser: Fix memory leaks in parse_user_data_unregistered(). + Part-of: + +2022-06-04 17:23:00 +0200 Jan Alexander Steffens (heftig) + + * gst/rtmp2/rtmp/rtmpmessage.c: + rtmp2: Fix allocation of GstRtmpMeta + Use the right size. + On 64-bit platforms, `GstMetaInfo` is larger than `GstRtmpMeta`, which + masked this bug. On 32-bit platforms, it causes crashes. Thanks to + @maxatka for discovering this. + Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1721 + Part-of: + +2022-06-02 16:38:55 +0200 Robert Mader + + * docs/plugins/gst_plugins_cache.json: + * ext/wayland/gstwaylandsink.c: + gstwaylandsink: Add support for the "render-rectangle" property + We already implement the `set_render_rectangle` videooverlay interface, + thus install the videooverlay property accordingly. + Part-of: + +2022-01-04 15:20:41 +0100 Robert Mader + + * docs/plugins/gst_plugins_cache.json: + * ext/wayland/gstwaylandsink.c: + * ext/wayland/gstwaylandsink.h: + * ext/wayland/meson.build: + * ext/wayland/wldisplay.c: + * ext/wayland/wldisplay.h: + * ext/wayland/wlwindow.c: + * ext/wayland/wlwindow.h: + * gst-libs/gst/wayland/gstwl_fwd.h: + * gst-libs/gst/wayland/gstwlbuffer.c: + * gst-libs/gst/wayland/gstwlbuffer.h: + * gst-libs/gst/wayland/gstwlcontext.c: + * gst-libs/gst/wayland/gstwlcontext.h: + * gst-libs/gst/wayland/gstwldisplay.c: + * gst-libs/gst/wayland/gstwldisplay.h: + * gst-libs/gst/wayland/gstwllinuxdmabuf.c: + * gst-libs/gst/wayland/gstwllinuxdmabuf.h: + * gst-libs/gst/wayland/gstwlshmallocator.c: + * gst-libs/gst/wayland/gstwlshmallocator.h: + * gst-libs/gst/wayland/gstwlvideobufferpool.c: + * gst-libs/gst/wayland/gstwlvideobufferpool.h: + * gst-libs/gst/wayland/gstwlvideoformat.c: + * gst-libs/gst/wayland/gstwlvideoformat.h: + * gst-libs/gst/wayland/gstwlwindow.c: + * gst-libs/gst/wayland/gstwlwindow.h: + * gst-libs/gst/wayland/meson.build: + * gst-libs/gst/wayland/wayland-prelude.h: + * gst-libs/gst/wayland/wayland.c: + * gst-libs/gst/wayland/wayland.h: + * tests/examples/waylandsink/main.c: + * tests/examples/waylandsink/wayland-threads.c: + gstwayland: Move reusable parts of the waylandsink into a library + In preparation for the new element `GstGtkWaylandSink`, move reusable + parts out of `GstWaylandSink` into the already exisiting but very + barebone library. + Notable changes include: + - the `GstWaylandVideo` interface was dropped + - support for `wl-shell` was dropped + - lots of renaming in order to match established naming patterns + - lots of code modernisations, reducing boilerplate + - members were made private wherever possible + Part-of: + +2022-06-06 00:30:15 +0200 Jan Alexander Steffens (heftig) + + * ext/opencv/gstcvtracker.cpp: + * ext/opencv/gstcvtracker.h: + * ext/opencv/meson.build: + opencv: Allow building against 4.6.x + Replace the broken version checks with one modeled after + `GLIB_CHECK_VERSION`. + Part-of: + +2022-05-30 16:31:38 -0400 Olivier Crête + + * ext/webrtc/gstwebrtcbin.c: + * tests/check/elements/webrtcbin.c: + webrtcbin: Reject answers that don't contain the same number of m-line as offer + Otherwise, it segfaults later. Also add test to validate this. + Part-of: + +2022-03-15 12:44:20 +0100 Marc Leeman + + * docs/plugins/gst_plugins_cache.json: + * gst/librfb/gstrfb-utils.c: + * gst/librfb/gstrfb-utils.h: + * gst/librfb/gstrfbsrc.c: + * gst/librfb/gstrfbsrc.h: + * gst/librfb/meson.build: + rfbsrc: add uri interface + Adding a uri interface enables plugging in RFB/VNC sources to anything + that makes use of uridecodebin: + gst-play-1.0 rfb://:password@10.40.216.180:5903?shared=1 + Use userinfo to pass user (ignored) and password, other key/value pairs + can be encoded in the query part of the URI (see shared) + Part-of: + +2022-05-17 00:36:24 +0200 Andoni Morales Alastruey + + * gst/videoparsers/gsth264parse.c: + * gst/videoparsers/gstvideoparseutils.c: + * gst/videoparsers/gstvideoparseutils.h: + videoparse: rename from _free to _clear + The function does not free the structure but the data + contained within. + Part-of: + +2022-05-16 14:21:53 +0200 Andoni Morales Alastruey + + * gst-libs/gst/codecparsers/gsth264parser.c: + h264parse: fix leak in user data unregistered + Part-of: + +2022-02-27 18:41:12 +0000 Andoni Morales Alastruey + + * gst-libs/gst/codecparsers/gsth264parser.h: + Fix documentation + Part-of: + +2022-02-17 15:55:19 +1100 Brad Hards + + * tests/check/elements/h264parse.c: + h264parse: add unit test for Precision Time Stamp in SEI messages + Part-of: + +2021-12-19 19:14:05 +0100 Andoni Morales Alastruey + + * gst-libs/gst/codecparsers/gsth264parser.c: + * gst-libs/gst/codecparsers/gsth264parser.h: + * gst/videoparsers/gsth264parse.c: + * gst/videoparsers/gsth264parse.h: + * gst/videoparsers/gstvideoparseutils.c: + * gst/videoparsers/gstvideoparseutils.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: + +2022-06-02 02:22:19 +0900 Seungha Yang + + * gst-libs/gst/cuda/meson.build: + meson: cuda: Add missing override_dependency() + Required for GstCuda library to be consumed via "gstreamer-cuda-1.0" + dependency. + Part-of: + +2022-06-02 21:25:38 +0900 Seungha Yang + + * gst-libs/gst/cuda/gstcudautils.c: + cuda: Fix uninitialized debug category + Make sure debug category init + Part-of: + +2022-04-22 06:46:07 +0000 Mengkejiergeli Ba + + * sys/msdk/gstmsdkav1enc.c: + * sys/msdk/gstmsdkav1enc.h: + * sys/msdk/gstmsdkenc.c: + * sys/msdk/gstmsdkenc.h: + msdkav1enc: Reorder pts + This is a workaround for pts because oneVPL cannot handle the pts + correctly when there is b-frames. We first cache the input frame pts in + a queue then retrive the smallest one for the output encoded frame as + we always output the coded frame when this frame is displayable. + Part-of: + +2022-03-31 06:45:03 +0000 Mengkejiergeli Ba + + * sys/msdk/gstmsdkav1enc.c: + * sys/msdk/gstmsdkav1enc.h: + msdkav1enc: Add b-pyramid and p-pyramid + Part-of: + +2022-03-31 06:33:55 +0000 Mengkejiergeli Ba + + * sys/msdk/gstmsdkav1enc.c: + * sys/msdk/gstmsdkav1enc.h: + msdkav1enc: Add tile for encoding + Part-of: + +2022-03-31 06:03:36 +0000 Mengkejiergeli Ba + + * sys/msdk/gstmsdk.c: + * sys/msdk/gstmsdkav1enc.c: + * sys/msdk/gstmsdkav1enc.h: + * sys/msdk/gstmsdkenc.c: + * sys/msdk/gstmsdkenc.h: + * sys/msdk/meson.build: + msdk: Add msdkav1enc element + Part-of: + +2022-05-31 20:39:29 +0200 Jakub Adam + + * sys/amfcodec/gstamfencoder.cpp: + amfencoder: always empty the queue when pushing output samples + gst_amf_encoder_try_output() pushes at most one output buffer downstream + although more may be ready. As a consequence, output samples will keep + queueing up in AMFComponent whenever QueryOutput() returns AMF_REPEAT + (and do_wait is FALSE). This has negative impact on latency when the + video being encoded is a live stream. + In order to avoid it, always retrieve and push all samples available in + AMFComponent's output queue at once. + Part-of: + +2022-05-29 06:55:27 +0900 Seungha Yang + + * sys/directshow/gstdshowvideosrc.cpp: + * sys/directshow/plugin.cpp: + directshow: Fix for uninitialized debug category warning + A method in the code is used in another place (device provider) + Part-of: + +2022-05-29 12:42:52 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvabaseenc.c: + * sys/va/gstvabasetransform.c: + va: Register base classes as abstract. + Part-of: + +2022-05-29 12:09:22 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvaencoder.c: + va: encoder: Use entrypoint type. + Part-of: + +2022-05-27 14:47:21 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvah264enc.c: + va264enc: Fix typo. + Part-of: + +2022-05-27 14:45:51 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvaencoder.c: + va: encoder: Fix regression since commit 2042c2d4f0. + There's no need to compare with the open entrypoint to query the + encoder. This commit removes the checks to the configured entrypoint + with the parameter. + Part-of: + +2022-03-26 23:48:46 +0900 Seungha Yang + + * sys/mediafoundation/gstmfh264enc.cpp: + * sys/mediafoundation/gstmfh265enc.cpp: + * sys/mediafoundation/gstmfvideoencoder.cpp: + * sys/mediafoundation/gstmfvideoencoder.h: + * sys/mediafoundation/gstmfvp9enc.cpp: + * tests/examples/mediafoundation/meson.build: + * tests/examples/mediafoundation/mfvideoenc-dynamic-reconfigure.c: + * tests/examples/meson.build: + mfvideoencoder: Handle dynamic property update + Re-init MFT on property update to apply new encoding options + Part-of: + +2022-03-26 23:50:24 +0900 Seungha Yang + + * sys/mediafoundation/plugin.cpp: + mediafoundation: Run indent + Part-of: + +2022-03-26 22:24:27 +0900 Seungha Yang + + * sys/mediafoundation/gstmfvideoencoder.cpp: + mfvideoenc: Remove redundant bitwise or operation + MFT_ENUM_FLAG_SORTANDFILTER_APPROVED_ONLY (0xc0) covers + MFT_ENUM_FLAG_SORTANDFILTER (0x40) + Part-of: + +2022-03-26 21:47:10 +0900 Seungha Yang + + * sys/mediafoundation/gstmfvideoencoder.cpp: + mfvideoencoder: Early terminate d3d11 interop + Shared texture will work only for the same GPU + Part-of: + +2022-03-26 21:43:50 +0900 Seungha Yang + + * sys/mediafoundation/gstmfvideoencoder.cpp: + mfvideoencoder: Check HRESULT code as well for GPU sync + Part-of: + +2022-03-26 21:40:47 +0900 Seungha Yang + + * sys/mediafoundation/gstmfvideoencoder.cpp: + mfvideoencoder: Don't specify keyed mutex misc flag + Current implemetation copies textures using non-keyed mutex way. + D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX is pointless + Part-of: + +2022-05-25 13:25:15 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvacompositor.c: + vacompositor: Pass video info pointer than copying it. + Part-of: + +2022-05-25 13:24:41 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvacompositor.c: + vacompositor: Remove useless consts. + Part-of: + +2022-05-27 21:13:43 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11memory.cpp: + * gst-libs/gst/d3d11/gstd3d11memory.h: + * sys/d3d11/gstd3d11decoder.cpp: + d3d11decoder: Work around Intel DXVA driver crash + Intel DXVA driver crashes sometimes (from GPU thread) if + ID3D11VideoDecoder is released while there are outstanding view objects. + To make sure the object life cycle, holds an ID3D11VideoDecoder refcount + in GstD3D11Memory object. + Part-of: + +2022-05-26 23:50:08 +0900 Seungha Yang + + * sys/qsv/gstqsvencoder.cpp: + qsvencoder: Bind internal texture to render target + ... so that memory allocator can initialize texture with black color + Part-of: + +2022-05-26 23:46:05 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11memory.cpp: + d3d11memory: Clear YUV texture with black color + We prefer black color as an initial texture color and + Direct3D11 runtime will initialize texture with zeros (except for alpha) + which is fine for RGB formats. But UV components of YUV texture + requires manual clear for black color. + Part-of: + +2022-05-24 12:54:05 -0400 U. Artie Eoff + + * tests/check/elements/vacompositor.c: + * tests/check/meson.build: + tests: va: add simple vacompositor test + Part-of: + +2022-04-22 16:29:56 +0800 Mengkejiergeli Ba + + * sys/msdk/gstmsdkh265enc.c: + * sys/msdk/gstmsdkh265enc.h: + msdkh265enc: Add intra refresh parameters + Note that for msdkh265enc, intra refresh parameters are only supported + under low-power mode. If these parameters are set without enabling lowpower, + they will be simply ignored. + Part-of: + +2022-04-15 13:38:20 +0800 Mengkejiergeli Ba + + * sys/msdk/gstmsdkh264enc.c: + * sys/msdk/gstmsdkh264enc.h: + msdkh264enc: Add intra refresh parameters + Part-of: + +2022-05-23 00:36:50 +0900 Seungha Yang + + * tests/examples/d3d11/d3d11videosink-kb.c: + * tests/examples/d3d11/d3d11videosink-kb.h: + * tests/examples/d3d11/d3d11videosink.c: + * tests/examples/d3d11/meson.build: + * tests/examples/key-handler.c: + * tests/examples/key-handler.h: + * tests/examples/nvcodec/meson.build: + * tests/examples/nvcodec/nvcodec-kb.c: + * tests/examples/nvcodec/nvcodec.c: + * tests/examples/nvcodec/nvcodec.h: + * tests/examples/qsv/meson.build: + * tests/examples/qsv/qsvenc-dynamic-reconfigure.c: + tests: examples: Stop duplicating keyboard interaction handler code + Extract the code from QSV and use it for D3D11 and NVCODEC examples + Part-of: + +2022-05-26 14:08:55 +0100 Tim-Philipp Müller + + * ext/webrtc/gstwebrtcice.c: + webrtc: fix build with older libnice versions + 1) check for right macro name when checking for NICE_VERSION_CHECK + 2) if libnice version is 0.1.18.1 this should not satisfy + a NICE_VERSION_CHECK(0,1,19). + Fixes build with libnice 0.1.18.1 subproject checkout. + Part-of: + +2022-05-24 05:33:05 +1000 Jan Schmidt + + * sys/androidmedia/gstamc.c: + amc: Don't map input buffer with write mode + When copying data out of a GStreamer buffer, we don't + need to map it writable. + Part-of: + +2022-05-11 09:17:46 +0100 Philippe Normand + + * ext/webrtc/gstwebrtcice.c: + webrtc: Use new libnice API to get the candidate relay address + Corresponding libnice API added in: + https://gitlab.freedesktop.org/libnice/libnice/-/merge_requests/229 (0.1.19) + https://gitlab.freedesktop.org/libnice/libnice/-/merge_requests/232 (0.1.20) + Part-of: + +2022-05-11 09:15:33 +0100 Philippe Normand + + * ext/webrtc/gstwebrtcice.c: + * ext/webrtc/meson.build: + webrtc: Ensure the NICE_CHECK_VERSION macro is available + This macro was introduced in libnice 0.1.19.1, so until we bump our libnice + dependency to 0.1.20 we have to vendor the macro. + Part-of: + +2022-03-26 12:36:46 +0000 Philippe Normand + + * ext/webrtc/gstwebrtcice.c: + * ext/webrtc/gstwebrtcice.h: + * ext/webrtc/gstwebrtcstats.c: + webrtc: Refactor ICECandidateStats freeing logic to a dedicated function + Part-of: + +2022-03-20 12:36:07 +0000 Philippe Normand + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Document IceCandidateStats and RTCIceCandidatePairStats + Part-of: + +2021-09-01 16:12:24 +0000 Sherrill Lin + + * tests/check/elements/webrtcbin.c: + webrtcstats: Update unit test for outbound rtp stats + "remote-id" is not guaranteed to present after commit 1deb034e3d873f577a38bc483e6256b0346ee874. + Thus, we should not fail the test if "remote-id" is not found. + Part-of: + +2021-06-30 16:01:10 -0400 Sherrill Lin + + webrtcstats: Improve selected candidate pair stats by adding ICE candidate info + The implementation follows w3.org specs: + * https://www.w3.org/TR/webrtc-stats/#icecandidate-dict* + * https://www.w3.org/TR/webrtc-stats/#candidatepair-dict* + Corresponding unit tests are also added. + Rebased and updated from + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1462 + Fixes #1207 + Part-of: + +2022-05-23 20:58:47 +0800 He Junyan + + * sys/va/gstvabaseenc.c: + * sys/va/gstvabaseenc.h: + * sys/va/gstvaencoder.c: + * sys/va/gstvaencoder.h: + * sys/va/gstvah264enc.c: + * sys/va/gstvah264enc.h: + * sys/va/plugin.c: + va: H264enc: Add encoder for VAEntrypointEncSliceLP. + We name vah264lpenc to support H264's VAEntrypointEncSliceLP encoder. + Part-of: + +2022-05-25 20:01:34 +0800 He Junyan + + * sys/va/gstvabaseenc.c: + va: encoder: Do not reset the frame count when reconfig(). + We should not reset the input/output_frame_count when some configure + changes. For example, the if resolution changes, the current way just + resets the frame count and make the PTS of the output buffer restart + from the original PTS of the first frame. That causes a lot of QOS + event and drop all the new frames. + We should only reset them when encoder start(). + Part-of: + +2022-05-25 19:57:18 +0800 He Junyan + + * sys/va/gstvabaseenc.c: + * sys/va/gstvabaseenc.h: + * sys/va/gstvah264enc.c: + va: encoder: change reset_state() to a virtual function of base class. + Part-of: + +2022-05-24 10:21:31 -0400 U. Artie Eoff + + * sys/va/gstvacompositor.c: + vacompositor: check caps and info return values + Check return values for get caps and video info from caps. + This was flagged by static analysis. + Part-of: + +2022-05-25 02:38:01 +0900 Seungha Yang + + * sys/d3d11/gstd3d11av1dec.cpp: + * sys/d3d11/gstd3d11h264dec.cpp: + * sys/d3d11/gstd3d11h265dec.cpp: + * sys/d3d11/gstd3d11mpeg2dec.cpp: + * sys/d3d11/gstd3d11vp8dec.cpp: + * sys/d3d11/gstd3d11vp9dec.cpp: + d3d11decoder: Don't print error log on negotiation failure + It may not be a critical error and even expected when shutting down + pipeline or flushing. + Part-of: + +2022-05-24 11:06:39 +0200 Erwann Gouesbet + + * sys/d3d11/gstd3d11screencapture.cpp: + d3d11screencapture: Fix missing/outdated cursor shape + d3d11screencapture can miss a cursor shape to draw or draw an outdated cursor shape. + - AcquireNextFrame only provides cursor shape when there is one update + - current d3d11screencapture skips cursor shape when mouse is not drawn + So, if a gstreamer application uses d3d11screencapture with cursor initially not drawn + "show-cursor"=false and then switches this property to true, the cursor will not be + actually drawn until AcquireNextFrame provides a new cursor shape. + This commit makes d3d11screencapture always update the cursor shape information, even + if the mouse is not drawn. d3d11screencapture will always have the latest cursor shape + when requested to draw it. + Part-of: + +2022-05-24 14:47:43 +0200 Víctor Manuel Jáquez Leal + + * sys/va/plugin.c: + va: Avoid unused variable if logging is disabled. + Part-of: + +2022-05-22 10:10:38 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvaencoder.c: + * sys/va/gstvah264enc.c: + va: Keep include's code style + Headers are in alphabetical order. + Part-of: + +2022-05-24 13:19:45 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvafilter.c: + vafilter: Fix logging of unsupported alpha blending. + Part-of: + +2022-05-24 14:36:36 +1000 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + * tests/check/elements/webrtcbin.c: + webrtcbin: reuese the same fec/rtx/red payload types for the same media payload + WHen bundling, if multiple medias are used with the same media payload, then + each of the fec/rtx/red additions would add a distinct payload. This could + very easily overflow the available payload space. + Instead, track the relationship between the media payload value and + the relevant fec/rtx/red payload values and reuse them whenever + necessary, even when bundling. + e.g. + ... + a=group:BUNDLE video0 video1 + m=video 9 UDP/SAVPF 96 97 + a=mid:video0 + a=rtpmap:96 VP8/90000 + a=rtpmap:97 rtx/90000 + a=fmtp:97 apt=96 + ... + m=video 9 UDP/SAVPF 96 97 + a=mid:video1 + a=rtpmap:96 VP8/90000 + a=rtpmap:97 rtx/90000 + a=fmtp:97 apt=96 + ... + Part-of: + +2022-05-23 00:04:03 +0900 Seungha Yang + + * tests/examples/qsv/qsvenc-dynamic-reconfigure.c: + tests: examples: Fix typo in QSV encoder example + Fixing width adjustment + Part-of: + +2022-05-22 22:44:11 +0900 Seungha Yang + + * sys/qsv/gstqsvav1enc.cpp: + * sys/qsv/gstqsvav1enc.h: + * sys/qsv/meson.build: + * sys/qsv/plugin.cpp: + * tests/examples/qsv/qsvenc-dynamic-reconfigure.c: + qsv: Add AV1 encoder element + Part-of: + +2022-05-22 21:38:34 +0900 Seungha Yang + + * sys/qsv/gstqsvencoder.cpp: + * sys/qsv/gstqsvh264enc.cpp: + * sys/qsv/gstqsvh265enc.cpp: + * sys/qsv/gstqsvjpegenc.cpp: + * sys/qsv/gstqsvvp9enc.cpp: + qsvencoder: Move common property to baseclass + adapter-luid and device-path are common for all codecs + Part-of: + +2022-05-23 15:03:03 +0800 He Junyan + + * sys/va/gstvabaseenc.c: + va: baseenc: No need to check the frame pointer in handle_frame(). + No need to check the NULL pointer of "frame" in error handling, it + is assured non-NULL by base class and we already use it everywhere + in this function. + Part-of: + +2022-05-22 15:03:54 +0800 He Junyan + + * sys/va/gstvabaseenc.c: + va: baseenc: include the "vacompat.h" for old version glib. + Part-of: + +2022-04-26 12:07:26 -0400 U. Artie Eoff + + * sys/va/plugin.c: + va: vpp: enable compositor + Part-of: + +2022-04-26 12:06:17 -0400 U. Artie Eoff + + * sys/va/gstvacompositor.c: + * sys/va/gstvacompositor.h: + * sys/va/gstvafilter.c: + * sys/va/gstvafilter.h: + * sys/va/meson.build: + va: vpp: add compositor + New implementation of a VA-API compositor with blend feature. + Various chunks of code was taken from vavpp. + Part-of: + +2022-03-25 21:51:47 +0800 He Junyan + + * sys/va/gstvah264enc.c: + va: Apply the va base encoder to the vah264enc. + Part-of: + +2022-03-25 21:48:05 +0800 He Junyan + + * sys/va/gstvabaseenc.c: + * sys/va/gstvabaseenc.h: + * sys/va/meson.build: + va: Add the GstVaBaseEnc common object for all va encoders. + Just like the GstVaBaseDec and GstVaBaseTransform, this base encoder + will handle all common logic for all va encoders. + Part-of: + +2022-05-15 00:56:59 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11_private.h: + * gst-libs/gst/d3d11/gstd3d11device.cpp: + * gst-libs/gst/d3d11/gstd3d11format.cpp: + * gst-libs/gst/d3d11/gstd3d11format.h: + d3d11device: Enhance format enumeration and debugging + * Enhance debug log to print human readable D3D11_FORMAT_SUPPORT flags + value, instead of packed numeric flagset value. + * Only device supported format will be added to format table. + Depending on device feature level (i.e., D3D9 feature devices), + 16bits formats will not be supported. Although there might be formats + we deinfed but not supported, it will not be a major issue in practice + since our D3D11 implementation does not support legacy devices already + (known limitation) and also old d3dvideosink will be promoted in that case. + Part-of: + +2021-12-22 19:23:37 +0100 Víctor Manuel Jáquez Leal + + * docs/plugins/gst_plugins_cache.json: + * gst/jpegformat/gstjpegparse.c: + * gst/jpegformat/gstjpegparse.h: + * gst/jpegformat/meson.build: + * tests/check/elements/jpegparse.c: + jpegparse: Rewrite element. + Now it uses the JPEG parser in libgstcodecparsers, while the whole + code is simplified by relying more in baseparser class for tag + handling. + The element now signals chroma-format and default framerate is 0/1, + which is for still-images. + Part-of: + +2021-12-25 13:00:17 +0100 Víctor Manuel Jáquez Leal + + * tests/check/elements/jpegparse.c: + tests: jpegparse: Mark data as static. + Part-of: + +2021-12-22 18:13:17 +0100 Víctor Manuel Jáquez Leal + + * gst/jpegformat/gstjifmux.c: + * gst/jpegformat/gstjifmux.h: + * gst/jpegformat/gstjpegformat.h: + * gst/jpegformat/gstjpegparse.c: + * gst/jpegformat/meson.build: + jpegformat: Use codecparsers' for JPEG markers. + Instead of repeating JPEG markers definition, this patch uses those + defined in gstcodecparsers library. + Part-of: + +2021-12-22 17:35:23 +0100 Víctor Manuel Jáquez Leal + + * gst/jpegformat/gstjpegparse.c: + * gst/jpegformat/gstjpegparse.h: + jpegparse: Headers cleanup + Part-of: + +2022-05-18 16:54:53 +0100 Philippe Normand + + * ext/webrtc/webrtcdatachannel.c: + datachannel: Notify low buffered amount according to spec + Quoting + https://www.w3.org/TR/webrtc/#dom-rtcdatachannel-bufferedamountlowthreshold + The bufferedAmountLowThreshold attribute sets the threshold at which the + bufferedAmount is considered to be low. When the bufferedAmount decreases from + above this threshold to **equal** or below it, the bufferedamountlow event fires. + Part-of: + +2022-05-17 14:15:40 +0300 Sebastian Dröge + + * gst/mpegtsmux/gstbasetsmux.c: + tsmux: Make sure to set srcpad caps under all conditions before outputting the first buffer + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1218 + Part-of: + +2022-05-17 04:27:00 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11device.cpp: + d3d11device: Don't print ERROR log on open failure + Device open can be failed in various reasons, but it's unlikely + our problem + Part-of: + +2022-05-17 14:02:28 +0300 Sebastian Dröge + + * gst/sdp/gstsdpdemux.c: + sdpdemux: Release request pads from rtpbin when freeing a stream + Otherwise the pads of the rtpbin stay around forever and are leaked. + Part-of: + +2022-05-17 03:32:10 +0900 Seungha Yang + + * sys/qsv/libmfx/meson.build: + * sys/qsv/meson.build: + qsv: Disable non-MSVC build on Windows + ... and remove pointless UWP consideration that will never work. + Cross-compiled binary has an issue which causes deadlock. + Although cerbero will not build this plugin for non-MSVC build, + people can still build this plugin and may complain its brokenness. + See also + https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/854 + Part-of: + +2022-04-28 16:02:26 +0100 Diogo Goncalves + + * sys/applemedia/avfvideosrc.m: + avfvideosrc: fix wrong framerate selected for caps + This fix solves an issue where a format that doesn't support the + requested framerate would be selected. It ensures that we use the first + format and framerate pair that supports the requested caps. + Part-of: + +2022-05-12 05:13:08 +0900 Seungha Yang + + * sys/d3d11/gstd3d11av1dec.cpp: + * sys/d3d11/gstd3d11decoder.cpp: + * sys/d3d11/gstd3d11decoder.h: + * sys/d3d11/gstd3d11h264dec.cpp: + * sys/d3d11/gstd3d11h265dec.cpp: + * sys/d3d11/gstd3d11mpeg2dec.cpp: + * sys/d3d11/gstd3d11vp8dec.cpp: + * sys/d3d11/gstd3d11vp9dec.cpp: + d3d11decoder: Add hardcoded minimum resolution values to caps for NVIDIA + NVIDIA GPUs have undocumented limitation regarding minimum resolution + and it can be queried via a NVDEC API. However, since we don't want to + bring CUDA/NVDEC API into D3D11, use hardcoded values for now + until we find a nice way for capability check. + Part-of: + +2022-05-12 07:23:29 +0200 Edward Hervey + + * gst/mxf/mxfdemux.c: + mxfdemux: Handle files produced by legacy FFmpeg + Until March 2022, the FFmpeg MXF muxer would write the various index table + segments with the same instance ID, which should only be used if it is a + duplicate/repeated table. + In order to cope with those, we first compare the other index table segment + properties (body/index SID, start position) before comparing the instance + ID. This will ensure that we don't consider them as duplicate, but can still + detect "real" duplicates (which would have the same other properties). + Part-of: + +2022-05-03 16:23:09 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvabasedec.c: + va: basedec: Always select first available format. + If the stream chroma doesn't match with any video format in the source + caps template (generated from va config surface formats) instead of + return unknown, return the first available format in the template, + assuming that the driver would be capable to do color conversions. + Part-of: + +2022-05-07 03:15:44 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth265decoder.c: + h265decoder: Improve robustness against malformed NAL packets + Use newly added gst_h265_parser_identify_and_split_nalu_hevc() + method to handle broken streams where packetized NAL unit + contain start code prefix in it. + It's obviously wrong stream but we know how to work around it + and even need to support such broken streams since + stateless decoder implementations are being a primary + decoder element. + Part-of: + +2022-05-10 03:32:42 +0900 Seungha Yang + + * gst-libs/gst/codecparsers/gsth265parser.c: + * gst-libs/gst/codecparsers/gsth265parser.h: + * tests/check/libs/h265parser.c: + h265parser: Add a new NAL parsing API to handle malformed packets + Add gst_h265_parser_identify_and_split_nalu_hevc() method to + handle a case where packetized stream contains start-code prefix. + This new method behaves similar to exisiting gst_h265_parser_identify_nalu_hevc() + but it will scan start-code prefix to split given data into + NAL units. + Part-of: + +2022-03-30 17:19:54 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvaav1dec.c: + * sys/va/gstvabasedec.c: + * sys/va/gstvah264dec.c: + * sys/va/gstvah265dec.c: + * sys/va/gstvampeg2dec.c: + * sys/va/gstvavp8dec.c: + * sys/va/gstvavp9dec.c: + va: basedec: Select format from template or negotiated caps. + Instead of using a hard-coded list of preferred formats according the + chroma type, now if now caps are pre-negotiated, from template caps + will choose the first format with the same chroma type. If + pre-negotiated, then it will choose the first format, with same chroma + type, from the first caps structure. + Also all the decoders will check if GST_VIDEO_FORMAT_UNKNOWN is + returned, failing the negotiation. + Part-of: + +2022-05-06 17:53:51 +0200 Víctor Manuel Jáquez Leal + + * gst-libs/gst/va/gstvadisplay_drm.c: + libs: va: Add O_CLOEXEC flag at opening drm device. + So any other potential subprocess won't have access to it. + Part-of: + +2022-05-06 18:21:00 -0400 Olivier Crête + + * gst/pcapparse/gstpcapparse.c: + pcapparse: Set timestamp in DTS, not PTS + This matches the behaviour of basesrc, in particular, it matches the + behaviour of udpsrc, so it's easier to use to as a replacement to test + rtpjitterbuffer and other similar elements. + Part-of: + +2022-01-16 15:51:32 +0300 Dmitry Osipenko + + * sys/v4l2codecs/gstv4l2codech264dec.c: + * sys/v4l2codecs/linux/v4l2-controls.h: + v4l2codecs: h264: Set frame type flags + V4L spec now requires decode_params flags to be set in accordance to the + frame's type. In particular this is required by H.264 decoder of NVIDIA + Tegra SoC to operate properly. Set the flags based on type of parsed + slices. + Part-of: + +2022-05-06 10:50:59 +0800 Mengkejiergeli Ba + + * tests/check/meson.build: + tests: Skip test if srtp element not built + Part-of: + +2022-05-06 01:46:36 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11memory.cpp: + d3d11memory: Protect against concurrent access from GPU and CPU to staging texture + Staging texture does not allow GPU access while it's CPU mapped. + But because we cannot block concurrent READ access by GstMemory design, + additional staging texture is still required. + Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1182 + Part-of: + +2022-05-05 02:16:54 +0900 Seungha Yang + + * sys/d3d11/gstd3d11screencapture.cpp: + * sys/d3d11/gstd3d11screencapture.h: + * sys/d3d11/gstd3d11screencapturesrc.cpp: + * tests/examples/d3d11/d3d11screencapturesrc.cpp: + d3d11screencapturesrc: Fix crash when d3d11 device is different from owned one + GstD3D11ScreenCapture object is pipeline-independent global object + and the object can be shared by multiple src elements, + in order to overcome a limitation of DXGI Desktop Duplication API. + Note that the API allows only single capture session in a process for + a monitor. + Therefore GstD3D11ScreenCapture object must be able to handle a case + where a src element holds different GstD3D11Device object. Which can + happen when GstD3D11Device context is not shared by pipelines. + What's changed: + * Allocates capture texture with D3D11_RESOURCE_MISC_SHARED for the + texture to be able to copied into other device's texture + * Holds additional shader objects per src element and use it when drawing + mouse + Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1197 + Part-of: + +2022-05-05 20:35:57 +0300 Sebastian Dröge + + * gst/mxf/mxfmux.c: + mxfmux: Disable aggregator's default negotiation + mxfmux can't negotiate caps with upstream/downstream and always outputs + specific caps based on the input streams. This will always happen before + it produces the first buffers. + By having the default aggregator negotiation enabled the same caps + would be pushed twice in the beginning, and again every time a + reconfigure event is received. + Part-of: + +2022-05-05 20:35:49 +0300 Sebastian Dröge + + * gst/mpegtsmux/gstbasetsmux.c: + mpegtsmux: Disable aggregator's default negotiation + mpegtsmux can't negotiate caps with upstream/downstream and always outputs + specific caps based on the input streams. This will always happen before + it produces the first buffers. + By having the default aggregator negotiation enabled the same caps + would be pushed twice in the beginning, and again every time a + reconfigure event is received. + Part-of: + +2022-05-05 00:24:26 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264decoder.c: + h264decoder: Fix for unhandled low-delay decoding case + Baseclass calls get_preferred_output_delay() in a chain of + sequence header parsing and then new_sequence() is called + with required DPB size (includes render-delay) information. + Thus latency query should happen before the sequence header + parsing for subclass to report required render-delay accordingly + via get_preferred_output_delay() method. + (e.g., zero delay in case of live pipeline) + This commit is to fix wrong liveness signalling in case of + upstream packetized format. + Part-of: + +2022-05-05 00:49:27 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth265decoder.c: + h265decoder: Fix for unhandled low-delay decoding case + Baseclass calls get_preferred_output_delay() in a chain of + sequence header parsing and then new_sequence() is called + with required DPB size (includes render-delay) information. + Thus latency query should happen before the sequence header + parsing for subclass to report required render-delay accordingly + via get_preferred_output_delay() method. + (e.g., zero delay in case of live pipeline) + This commit is to fix wrong liveness signalling in case of + upstream packetized format. + Part-of: + +2022-05-04 23:36:30 +0900 Seungha Yang + + * sys/nvcodec/gstnvh264dec.c: + * sys/nvcodec/gstnvh265dec.c: + nvh264dec,nvh265dec: Don't realloc bitstream buffer per slice + Allocated memory size has not been updated which results in + realloc per slice. Fixing it and also release bitstream buffer + on ::close(), not finalize. + Part-of: + +2022-04-29 20:28:53 +0200 Jakub Adam + + * sys/d3d11/gstd3d11screencapture.cpp: + d3d11screencapture: Set viewport when drawing mouse cursor + If there weren't any moved/dirty regions in the captured frame, the + viewport of the ID3D11DeviceContext would be left at whatever previous + value it had, which could lead to the cursor being drawn in a wrong + position and/or in an incorrect size. + Part-of: + +2022-05-02 22:59:59 +0900 Seungha Yang + + * sys/nvcodec/gstnvav1dec.c: + * sys/nvcodec/gstnvav1dec.h: + * sys/nvcodec/gstnvdecoder.c: + * sys/nvcodec/gstnvdecoder.h: + * sys/nvcodec/gstnvh264dec.c: + * sys/nvcodec/gstnvh265dec.c: + * sys/nvcodec/gstnvvp8dec.c: + * sys/nvcodec/gstnvvp9dec.c: + * sys/nvcodec/meson.build: + * sys/nvcodec/plugin.c: + nvcodec: Add AV1 decoder + Adding GstCodecs based AV1 decoder element + Part-of: + +2022-05-03 23:56:12 +0900 Seungha Yang + + * gst-libs/gst/codecs/gstav1decoder.c: + * gst-libs/gst/codecs/gstav1decoder.h: + av1decoder: Add support for render delay + Sync up with other decoder baseclass implementations + Part-of: + +2022-04-28 03:14:54 +0900 Seungha Yang + + * gst-libs/gst/codecs/gstav1decoder.c: + * gst-libs/gst/codecs/gstav1picture.h: + av1decoder: Hold OBU temporal and spatial id in picture struct + NVDEC API requires the information + Part-of: + +2022-05-04 01:03:37 +0900 Seungha Yang + + * sys/nvcodec/meson.build: + meson: nvcodec: Remove unnecessary override option and fix build with non-MSVC + cpp_std=c++11 was hack for macOS build but we don't build this plugin + for Apple device anymore. And add "-Wno-deprecated-declarations" + compile option for gcc/clang + Part-of: + +2021-12-17 17:22:22 +0900 Seungha Yang + + * sys/nvcodec/cuviddec.h: + * sys/nvcodec/nvEncodeAPI.h: + * sys/nvcodec/nvcuvid.h: + nvcodec: Bump SDK header version to 11.1 + Part-of: + +2022-05-02 22:46:06 +0900 Seungha Yang + + * sys/nvcodec/gstnvdecoder.c: + * sys/nvcodec/gstnvh264dec.c: + * sys/nvcodec/gstnvh265dec.c: + * sys/nvcodec/gstnvvp8dec.c: + * sys/nvcodec/gstnvvp9dec.c: + nvdecoder: Handle DPB size margin in a single place + ... instead of each subclass + Part-of: + +2022-05-02 22:41:53 +0900 Seungha Yang + + * sys/d3d11/gstd3d11av1dec.cpp: + * sys/d3d11/gstd3d11decoder.cpp: + * sys/d3d11/gstd3d11h264dec.cpp: + * sys/d3d11/gstd3d11h265dec.cpp: + * sys/d3d11/gstd3d11mpeg2dec.cpp: + * sys/d3d11/gstd3d11vp8dec.cpp: + * sys/d3d11/gstd3d11vp9dec.cpp: + d3d11decoder: Handle DPB size margin in a single place + ... instead of each subclass + Part-of: + +2022-04-28 04:25:05 +0900 Seungha Yang + + * gst-libs/gst/codecs/gstav1decoder.c: + * gst-libs/gst/codecs/gstav1decoder.h: + * gst-libs/gst/codecs/gstmpeg2decoder.c: + * gst-libs/gst/codecs/gstmpeg2decoder.h: + * gst-libs/gst/codecs/gstvp8decoder.c: + * gst-libs/gst/codecs/gstvp8decoder.h: + * gst-libs/gst/codecs/gstvp9decoder.c: + * gst-libs/gst/codecs/gstvp9decoder.h: + * sys/d3d11/gstd3d11av1dec.cpp: + * sys/d3d11/gstd3d11mpeg2dec.cpp: + * sys/d3d11/gstd3d11vp8dec.cpp: + * sys/d3d11/gstd3d11vp9dec.cpp: + * sys/nvcodec/gstnvvp8dec.c: + * sys/nvcodec/gstnvvp9dec.c: + * sys/v4l2codecs/gstv4l2codecmpeg2dec.c: + * sys/v4l2codecs/gstv4l2codecvp8dec.c: + * sys/v4l2codecs/gstv4l2codecvp9dec.c: + * sys/va/gstvaav1dec.c: + * sys/va/gstvampeg2dec.c: + * sys/va/gstvavp8dec.c: + * sys/va/gstvavp9dec.c: + codecs: Signal required DPB size for AV1,MPEG2,VP8, and VP9 via new_sequence() + Make all codecs consistent so that subclass can know additional DPB + size requirement depending on render-delay configuration regardless + of codec. Note that render-delay feature is not implemented for AV1 + yet but it's planned. + Also, consider new_sequence() is mandatory requirement, not optional + Part-of: + +2022-04-12 12:17:09 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2format.c: + v4l2codecs: Port to the new tile size helper + This will complete the scaling of width/height shift scaling + as only a partial implementation was made. + Part-of: + +2022-05-02 11:46:59 -0400 Thibault Saunier + + * gst-libs/gst/cuda/meson.build: + cuda: Fix introspection warnings + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1183 + Part-of: + +2022-05-02 21:57:07 +0900 Seungha Yang + + * gst-libs/gst/cuda/gstcudautils.c: + Revert "cuda: Fix GstCudaContext refcount bug" + This reverts commit df7ee0e21518ab5586e4094f2089048f3767d5f5. + We should not unref it since gst_message_new_have_context() + takes ownership of the GstContext. + Part-of: + +2022-05-02 09:15:57 +0200 Edward Hervey + + * gst/mpegtsdemux/mpegtspacketizer.c: + tsdemux: Demote warning to simple debug + That issue is actually handled, so don't pollute the logs with such warning. + Part-of: + +2022-04-29 19:08:46 +0300 Sebastian Dröge + + * gst/interlace/gstinterlace.c: + interlace: Also handle a missing "interlace-mode" field as progressive + Otherwise caps negotiation will fail in situations that are supposed + to work, like: + "video/x-raw,framerate=(fraction)60/1" ! interlace field-pattern=0 ! "video/x-raw,framerate=(fraction)30/1" + Part-of: + +2022-04-29 19:08:32 +0300 Sebastian Dröge + + * gst/interlace/gstinterlace.c: + interlace: Add some more debug output to the getcaps function + Part-of: + +2022-04-29 16:56:54 +0100 Myles Inglis + + * gst-libs/gst/cuda/gstcudautils.c: + cuda: Fix GstCudaContext refcount bug + Part-of: + +2022-04-28 17:08:11 +0200 Ludvig Rappe + + * ext/webrtc/icestream.c: + webrtc: Fix memory leak in icestream + Since both g_value_set_object() and g_weak_ref_get() takes a reference + there will be two new references to the GstWebRTCICE object when there + should be only one. g_value_take_object() has the same functionality as + g_value_set_object() but does not take a reference. + Without this change, the GstWebRTCICE object will be leaked. + Part-of: + +2022-04-27 22:50:37 +0900 Seungha Yang + + * gst-libs/gst/cuda/gstcudautils.c: + cuda: Correct CUDA device id field in GstContext structure + device id is unsigned int, not signed. + Part-of: + +2022-04-28 13:23:39 +0200 Víctor Manuel Jáquez Leal + + * gst-libs/gst/codecs/gsth265decoder.h: + codecs: h265decoder: Fix documentation. + Part-of: + +2022-04-27 15:24:50 +0200 Edward Hervey + + * gst/mpegtsdemux/mpegtsbase.c: + mpegts: Handle "empty" PMT gracefully + Some streams have 2 PMT sections in a single TS packet. The first one is "valid" + but doesn't contain/define any streams. That causes an unrecoverable issue when + we try to activate the 2nd (valid) PMT. + Instead of doing that, pre-emptively refuse to process PMT without any streams + present within. We still do post that section on the bus to inform applications. + Fixes #1181 + Part-of: + +2022-04-26 09:11:07 +0200 Stéphane Cerveau + + * tests/check/elements/srtp.c: + srtp: fix flaky unit test + Use different port for each test to avoid other UDP + packet to be received. + Part-of: + +2022-04-28 00:48:35 +0900 Seungha Yang + + * sys/d3d11/plugin.cpp: + d3d11h265dec: Assign PRIMARY + 1 rank + Promote d3d11h265dec to be default one if available + Part-of: + +2022-04-28 00:31:49 +0900 Seungha Yang + + * sys/nvcodec/gstnvvp9dec.c: + nvvp9sldec: Increase DPB size to cover render delay + This should've included in the previous MR + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/987 + already, but missed. + Part-of: + +2022-03-07 15:44:04 +0000 Thibault Saunier + + * ext/qroverlay/gstqroverlay.c: + qroverlay: Reset data_changed after we use the info + It was never reset so it was always TRUE once the data was changed! + Part-of: + +2022-03-04 22:00:18 +0000 Thibault Saunier + + * ext/qroverlay/gstqroverlay.c: + qroverlay: Add a GstQROverlay meta + See documentation + Part-of: + +2022-04-27 00:27:06 +0200 Mathieu Duponchelle + + * gst/onvif/gstrtponviftimestamp.c: + rtponviftimestamp: add extension data to all packets .. + regardless of whether they are input as individual buffers or + buffer lists. + The ONVIF specification requires all packets to hold the extension, + it makes no sense to behave differently when handling buffer lists. + Part-of: + +2022-03-08 21:26:16 +0000 Thibault Saunier + + * sys/nvcodec/gstcudaconvert.c: + cudaconvert: Enhance debugging when setting video info fails + Part-of: + +2022-04-26 22:35:30 +0800 He Junyan + + * gst-libs/gst/codecparsers/gsth265bitwriter.c: + codecparsers: bitwriter: Calculate PicSizeInCtbsY when writing slice header. + The slice->pps->PicWidthInCtbsY/PicHeightInCtbsY values are calculated when + we parse the slice header. But they are not calculated in bitwriter and so + may not have valid value when writing slice header. + Part-of: + +2022-04-24 17:26:03 +0800 He Junyan + + * gst-libs/gst/codecparsers/gsth265bitwriter.c: + codecparsers: bitwriter: Fix some coverity issues of H265 bitwriter. + Part-of: + +2022-04-24 00:02:18 +0800 He Junyan + + * sys/va/gstvabasedec.c: + va: dec: Use gst_buffer_pool_config_set_va_alignment() to set alignment. + Part-of: + +2022-04-23 23:59:08 +0800 He Junyan + + * gst-libs/gst/va/gstvapool.h: + va: pool: Replace all tabs with spaces in header file. + Part-of: + +2022-04-23 23:52:34 +0800 He Junyan + + * gst-libs/gst/va/gstvapool.c: + va: pool: Delete the GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT. + The va pool is used for GPU side surface/image, its alignment should + not be changed arbitrarily by others. So we decide not to expose the + GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT flag anymore. + Instead, user can call gst_buffer_pool_config_set_va_alignment() to + set its surface/image alignment. + Part-of: + +2022-04-23 23:40:14 +0800 He Junyan + + * gst-libs/gst/va/gstvapool.c: + * gst-libs/gst/va/gstvapool.h: + va: pool: Add set_va_alignment() API. + We want to use gst_buffer_pool_config_set_va_alignment() to replace + gst_buffer_pool_config_get_video_alignment(). The later one is specific + for GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT option. + Part-of: + +2022-04-26 01:16:06 +0800 He Junyan + + * gst/videoparsers/gstav1parse.c: + av1parse: Fix a latent memory leak in colorimetry setting. + Also delete the useless "have_cinfo" judgement. + Part-of: + +2022-04-24 22:54:58 +0800 He Junyan + + * gst/videoparsers/gstav1parse.c: + av1parse: Correct the meaning of color_range flag. + According to spec: + color range equal to 0 shall be referred to as the studio swing + representation and color range equal to 1 shall be referred to as + the full swing representation. + The current status is just the opposite. + Part-of: + +2022-04-25 22:59:14 +0900 Seungha Yang + + * sys/qsv/gstqsvencoder.cpp: + qsvencoder: Workaround for invalid DTS with VP9 + SDK runtime seems to report zero DTS for all frames in case of VP9 but + we don't need to use DTS for the codec. + Part-of: + +2022-04-24 00:37:40 +0900 Seungha Yang + + * gst-libs/gst/cuda/meson.build: + * sys/nvcodec/meson.build: + nvcodec: Stop building for non-{Windows,Linux} target + The other platforms, specifically macOS have not been supported already + because this plugin loads so or dll. Moreover, NVIDIA dropped + support for macOS as of CUDA 11.0. See also + https://developer.nvidia.com/nvidia-cuda-toolkit-11_0_0-developer-tools-mac-hosts + Part-of: + +2022-03-28 17:06:46 +0200 Stéphane Cerveau + + * tests/check/elements/srtp.c: + * tests/check/meson.build: + srtp: add unit tests + Enable unit tests in meson.build + Add test_play_key_error to check the stats + Part-of: + +2022-03-25 17:47:23 +0100 Stéphane Cerveau + + * docs/plugins/gst_plugins_cache.json: + * ext/srtp/gstsrtpdec.c: + * ext/srtp/gstsrtpdec.h: + srtpdec: add counts in stats + In order to count the buffers which have been received and dropped for + decryption reason, add a stats to track it. + Part-of: + +2022-04-23 04:00:21 +0900 Seungha Yang + + * sys/d3d11/gstd3d11window_win32.cpp: + d3d11videosink: Fix for unhandled mouse double click events + Only window created with CS_DBLCLKS style can receive those mouse + double click events, so we need to use the style for internal/external + windows can get double click events. + Also, passthrough mouse events to parent window in the same message pumping + threads instead of manually forwarding each mouse event. + Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1172 + Part-of: + +2022-03-07 08:46:57 -0500 Xavier Claessens + + * gst-libs/gst/vulkan/meson.build: + * sys/msdk/meson.build: + Meson: Fix deprecation warnings + Part-of: + +2022-04-22 17:44:06 +0200 Stéphane Cerveau + + * ext/rsvg/gstrsvgdec.h: + rvsg: fix cairo include + Part-of: + +2022-04-22 12:29:29 +0200 Corentin Damman + + * sys/nvcodec/cuda-converter.c: + cuda-converter: fix nvrtc compilation on non-English locale systems + Part-of: + +2022-04-21 00:38:37 +0900 Sangchul Lee + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Avoid access of freed memory + Part-of: + +2022-04-15 22:19:09 +0800 He Junyan + + * sys/va/gstvah264enc.c: + va: h264enc: Do not let L0 number surplus the HW limitation. + The algorithm to calculate the L0/L1 number may let the L0 number + surplus the HW limitation. We should ensure that limitation after + that calculation. + Part-of: + +2022-03-02 14:42:42 +0800 He Junyan + + * tests/check/libs/h265bitwriter.c: + * tests/check/meson.build: + test: Add test cases for the H265 bitwriter. + Part-of: + +2022-03-02 14:31:05 +0800 He Junyan + + * gst-libs/gst/codecparsers/gsth265bitwriter.c: + * gst-libs/gst/codecparsers/gsth265bitwriter.h: + * gst-libs/gst/codecparsers/meson.build: + codecparsers: bitwriter: Add the common bit writer functions for H265. + Part-of: + +2022-04-20 13:18:34 +0800 He Junyan + + * sys/va/gstvavpp.c: + va: vpp: Update the colorimetry and HDR fields when fixup src caps. + When we fixup src caps, the current way of handling the HDR fields is not + correct. + 1. We trim the HDR fields only when the input caps is not a subset of the + fixup src caps. But in fact, the input caps with HDR fields such as the + "mastering-display-info" can possibly be the subset of the fixup src caps, + if they have all same other fields. + 2. We always copy the colorimetry from input caps to src caps if it is + absent. But when hdr-tone-mapping is enabled, the HDR->SDR conversion makes + the colorimetry change. We should use downstream's setting, or just use the + default colorimetry of SDR. + We changes to: + 1. If hdr-tone-mapping is enabled, we trim all HDR fields and add a correct + colorimetry. + 2. Copy colorimetry from input if it is still absent. + 3. Consider the subset replacement. + Part-of: + +2022-04-20 23:06:56 +0900 Seungha Yang + + * sys/qsv/gstqsvdecoder.h: + * sys/qsv/gstqsvh264dec.cpp: + * sys/qsv/gstqsvh264enc.cpp: + * sys/qsv/gstqsvh265dec.cpp: + * sys/qsv/gstqsvh265enc.cpp: + * sys/qsv/gstqsvjpegenc.cpp: + * sys/qsv/gstqsvvp9enc.cpp: + qsv: Add GPU description to element long-name on Windows + Would be useful for a multi-Intel-GPU system + Part-of: + +2022-04-19 21:38:31 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvavpp.c: + vapostproc: Notify if hdr-tone-mapping property changes. + Part-of: + +2022-03-30 18:09:36 +0200 Víctor Manuel Jáquez Leal + + * gst-libs/gst/va/vasurfaceimage.c: + * gst-libs/gst/va/vasurfaceimage.h: + * sys/va/gstvafilter.c: + * sys/va/gstvah264enc.c: + va: Expose a couple va surface/buffer methods. + And use them in va plugin. + Also, set as default logging category the vadisplay one. + Part-of: + +2022-04-20 08:09:58 +0900 Wonchul Lee + + * ext/dash/gstdashsink.c: + dashsink: Unlock when failed to get content + Part-of: + +2022-04-18 17:50:22 +0900 Camilo Celis Guzman + + * gst/videoparsers/gstav1parse.c: + gstav1parse: fixup various possible logical errors + Found via an analyzed build for Clang. Specifically we had: + gstav1parse.c[1850,11] in gst_av1_parse_detect_stream_format: Logic error: The left operand of '==' is a garbage value + gstav1parse.c[1606,11] in gst_av1_parse_handle_to_small_and_equal_align: Logic error: The left operand of '==' is a garbage value + Also a couple of false-positives: + gstav1parse.c[1398,24] in gst_av1_parse_handle_one_obu: Logic error: Branch condition evaluates to a garbage value + gstav1parse.c[1440,37] in gst_av1_parse_handle_one_obu: Logic error: The left operand of '-' is a garbage value + Part-of: + +2022-03-25 10:18:34 -0400 Xavier Claessens + + * 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: + +2022-03-25 10:20:24 -0400 Xavier Claessens + + * gst-libs/gst/gettext.h: + * gst-libs/gst/gst-i18n-plugin.h: + Delete unused i18n headers + Part-of: + +2022-03-25 09:59:23 -0400 Xavier Claessens + + * ext/curl/gstcurlelement.c: + * ext/curl/gstcurlhttpsrc.c: + * ext/dash/gstdashdemux.c: + * ext/ladspa/gstladspa.c: + * ext/openal/gstopenal.c: + * ext/openal/gstopenalelement.c: + * ext/opencv/gsttemplatematch.cpp: + * ext/resindvd/resindvdbin.c: + * ext/resindvd/resindvdsrc.c: + * ext/rtmp/gstrtmpsrc.c: + * ext/smoothstreaming/gstmssdemux.c: + * ext/smoothstreaming/gstsmoothstreaming-plugin.c: + * ext/sndfile/gstsf.c: + * ext/sndfile/gstsfdec.c: + * ext/sndfile/gstsfelement.c: + * ext/sndfile/gstsfsink.c: + * ext/sndfile/gstsfsrc.c: + * gst-libs/gst/adaptivedemux/gstadaptivedemux.c: + * gst/aiff/aiffparse.c: + * gst/aiff/gstaiffelement.c: + * gst/asfmux/gstasfmux.c: + * gst/asfmux/gstasfparse.c: + * gst/camerabin2/camerabingeneral.c: + * gst/camerabin2/gstcamerabin2.c: + * gst/camerabin2/gstdigitalzoom.c: + * gst/camerabin2/gstviewfinderbin.c: + * gst/camerabin2/gstwrappercamerabinsrc.c: + * gst/dvdspu/gstdvdspu.c: + * gst/midi/midi.c: + * gst/mpegtsdemux/mpegtsbase.c: + * gst/transcode/gsttranscodebin.c: + * gst/transcode/gsttranscodeelement.c: + * sys/dvb/gstdvb.c: + * sys/dvb/gstdvbelement.c: + * sys/dvb/gstdvbsrc.c: + * sys/dvb/parsechannels.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: + +2022-04-13 15:23:56 -0400 Thibault Saunier + + * gst-libs/gst/cuda/gstcudautils.c: + * gst-libs/gst/cuda/gstcudautils.h: + * sys/nvcodec/gstcudamemorycopy.c: + cuda: Fix typo in gst_cuda_buffery_copy_type_to_string + Part-of: + +2021-12-12 13:19:52 +0000 Thibault Saunier + + * gst-libs/gst/cuda/gstcudacontext.c: + * gst-libs/gst/cuda/gstcudacontext.h: + * gst-libs/gst/cuda/gstcudautils.h: + cuda: Add a `gst_cuda_context_new_wrapped` constructor + So that application or people implementing cuda element from + outside GStreamer itself can ensure that their contexts are used + by GStreamer. + Part-of: + +2021-12-08 11:48:08 +0000 Thibault Saunier + + * docs/libs/cuda/index.md: + * docs/libs/cuda/sitemap.txt: + * docs/meson.build: + * gst-libs/gst/cuda/cuda-gst.h: + * gst-libs/gst/cuda/cuda-prelude.h: + * gst-libs/gst/cuda/gstcudabufferpool.c: + * gst-libs/gst/cuda/gstcudabufferpool.h: + * gst-libs/gst/cuda/gstcudacontext.c: + * gst-libs/gst/cuda/gstcudacontext.h: + * gst-libs/gst/cuda/gstcudaloader.c: + * gst-libs/gst/cuda/gstcudaloader.h: + * gst-libs/gst/cuda/gstcudamemory.c: + * gst-libs/gst/cuda/gstcudamemory.h: + * gst-libs/gst/cuda/gstcudanvrtc.c: + * gst-libs/gst/cuda/gstcudanvrtc.h: + * gst-libs/gst/cuda/gstcudautils.c: + * gst-libs/gst/cuda/gstcudautils.h: + * gst-libs/gst/cuda/gstnvrtcloader.c: + * gst-libs/gst/cuda/gstnvrtcloader.h: + * gst-libs/gst/cuda/meson.build: + * gst-libs/gst/cuda/stub/cuda.h: + * gst-libs/gst/cuda/stub/cudaGL.h: + * gst-libs/gst/cuda/stub/nvrtc.h: + * gst-libs/gst/meson.build: + * sys/nvcodec/cuda-converter.c: + * sys/nvcodec/cuda-converter.h: + * sys/nvcodec/gstcudabasefilter.c: + * sys/nvcodec/gstcudabasetransform.c: + * sys/nvcodec/gstcudabasetransform.h: + * sys/nvcodec/gstcudaconvert.c: + * sys/nvcodec/gstcudafilter.c: + * sys/nvcodec/gstcudamemorycopy.c: + * sys/nvcodec/gstcudascale.c: + * sys/nvcodec/gstcuvidloader.h: + * sys/nvcodec/gstnvbaseenc.c: + * sys/nvcodec/gstnvbaseenc.h: + * sys/nvcodec/gstnvdec.c: + * sys/nvcodec/gstnvdec.h: + * sys/nvcodec/gstnvdecoder.c: + * sys/nvcodec/gstnvdecoder.h: + * sys/nvcodec/gstnvenc.c: + * sys/nvcodec/gstnvenc.h: + * sys/nvcodec/gstnvencoder.cpp: + * sys/nvcodec/gstnvencoder.h: + * sys/nvcodec/gstnvh264dec.c: + * sys/nvcodec/gstnvh264encoder.cpp: + * sys/nvcodec/gstnvh264encoder.h: + * sys/nvcodec/gstnvh265dec.c: + * sys/nvcodec/gstnvh265encoder.cpp: + * sys/nvcodec/gstnvh265encoder.h: + * sys/nvcodec/gstnvvp8dec.c: + * sys/nvcodec/gstnvvp9dec.c: + * sys/nvcodec/meson.build: + * sys/nvcodec/plugin.c: + cuda: Factor out a public GstCUDA library + So applications and elements implemented outside GStreamer can reuse + our infrastructure + Part-of: + +2021-12-03 13:12:42 +0000 Thibault Saunier + + * sys/nvcodec/gstnvbaseenc.c: + * sys/nvcodec/gstnvenc.c: + nvenc: Give more details about errors + Part-of: + +2021-11-12 20:13:10 +0100 Ruben Gonzalez + + * 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: + +2022-04-19 04:37:05 +0900 Seungha Yang + + * sys/d3dvideosink/d3dvideosink.c: + d3dvideosink: Remove outdated comment + d3dvideosink is not a primary video sink element + Part-of: + +2022-04-18 00:25:18 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264decoder.c: + * gst-libs/gst/codecs/gsth265decoder.c: + h264decoder,h265decoder: Do not hold codec_data buffer + ... also do not need to extract it from caps. + Decoder uses codec_data only once per set_format() and + baseclass will extract codec_data buffer already. + Part-of: + +2022-04-17 23:55:55 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.cpp: + d3d11decoder: Do not preallocate texture using downstream d3d11 buffer pool + Our decoder implementation does not use downstream d3d11 pool for + decoding because of special requirement of D3D11/DXVA. So preallocation + using the downstream buffer pool will waste GPU memory in most cases. + Part-of: + +2022-04-14 13:22:03 +0300 Vivia Nikolaidou + + * gst/videoparsers/gsth264parse.c: + h264parse: Include coded-picture-structure info in caps + This reverts commit 652773de366a98e155332bf8ffb83ee5e6bea9e5 and + modifies it to rename the caps field name to coded-picture-structure. + It was previously removed because it confuses the decoder and we didn't + have a valid use case for including it in the encoded caps at this + stage. We now do have such a use case but still don't want to confuse + the decoder, so the field is renamed. + However, it is still not accurate without looking at the SEI picture + structure of each frame, so it was named coded-picture-structure. If its + value is "frame" it is most likely progressive, if it's "field" it is + most likely interlaced or mixed. + Part-of: + +2022-04-18 12:44:19 +0800 He Junyan + + * sys/va/gstvah264enc.c: + va: h264enc: Fix the forgotten unlock() when getting device path property. + Part-of: + +2022-04-17 22:25:14 +0900 Seungha Yang + + * sys/qsv/gstqsvdecoder.cpp: + qsvdecoder: Use system memory for non-d3d11 downstream + QSV's memory download implementation seems to be more faster + than our implementation + Part-of: + +2022-04-17 02:14:50 +0900 Seungha Yang + + * sys/qsv/gstqsvdecoder.cpp: + * sys/qsv/gstqsvh265dec.cpp: + * sys/qsv/gstqsvh265dec.h: + * sys/qsv/meson.build: + * sys/qsv/plugin.cpp: + qsv: Add H.265 decoder + Part-of: + +2022-04-17 02:18:37 +0900 Seungha Yang + + * sys/qsv/gstqsvh264dec.cpp: + * sys/qsv/gstqsvutils.cpp: + * sys/qsv/plugin.cpp: + qsv: Include single gstva.h + Part-of: + +2022-04-17 02:04:08 +0900 Seungha Yang + + * sys/qsv/gstqsvh264dec.cpp: + qsvh264dec: Don't register element if it's not supported by device + Part-of: + +2022-04-17 01:27:10 +0900 Seungha Yang + + * sys/qsv/gstqsvdecoder.cpp: + * sys/qsv/gstqsvdecoder.h: + * sys/qsv/gstqsvh264dec.cpp: + qsvh264dec: Add support for packetized format + Handle avc/avc3 packetized formats + Part-of: + +2022-04-17 00:00:55 +0900 Seungha Yang + + * sys/qsv/gstqsvdecoder.cpp: + * sys/qsv/gstqsvencoder.cpp: + * sys/qsv/gstqsvh264dec.cpp: + * sys/qsv/gstqsvh264enc.cpp: + * sys/qsv/gstqsvh265enc.cpp: + * sys/qsv/gstqsvjpegenc.cpp: + * sys/qsv/gstqsvvp9enc.cpp: + * sys/qsv/plugin.cpp: + qsv: Move debug init into each source file + Part-of: + +2022-04-16 23:51:05 +0900 Seungha Yang + + * sys/qsv/gstqsvdecoder.cpp: + qsvdecoder: Reset next_task_index per init_session() + Part-of: + +2022-04-16 21:27:57 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.cpp: + d3d11decoder: Copy HDR10 related caps field manually + If negotiate() is called from the set_format() chain, sinkpad may not + hold caps yet, so baseclass cannot copy it over to srcpad caps. + Copy them manually. + Part-of: + +2022-04-16 22:27:13 +0900 Seungha Yang + + * sys/qsv/gstqsvh264enc.cpp: + * sys/qsv/gstqsvh265enc.cpp: + qsvencoder: Rename property name i-frames to idr-interval + ... and clarify the meaning of the value for each h264 and h265 + encoder since the usage of mfxInfoMFX::IdrInterval is different + per codec. + Part-of: + +2022-04-16 21:26:55 +0900 Seungha Yang + + * sys/qsv/gstqsvh265enc.cpp: + qsvh265enc: Write HDR10 metadata SEI + If device supports HDR10 metadata API, write the information + into bitstream per IDR. + Part-of: + +2022-04-13 06:19:40 +0200 Víctor Manuel Jáquez Leal + + * docs/plugins/gst_plugins_cache.json: + gst_plugins_cache.json: Update va plugins. + * Update conditionally-available attribute in vah264enc properties. + * Update GstVaFeature usage. + * Update GstVaEncoderRatecontrol usage. + * Update vapostproc classification. + * Add `add-borders` property in vapostproc. + Part-of: + +2022-04-13 05:58:46 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvah264enc.c: + vah264enc: Use GstVaFeature enum for enabling MBBRC. + GstVaFeature is a common enumeration for auto/disabled/enabled kind of + property setting. + Part-of: + +2022-04-13 05:56:59 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvaencoder.c: + * sys/va/gstvaencoder.h: + * sys/va/gstvah264enc.c: + vah264enc: Move rate-control enum to encoder class helper. + Since it's a common enumeration used, as user setting property, for + most of codecs. + Part-of: + +2022-04-13 05:52:31 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvah264enc.c: + vah264enc: Add device-path property. + Part-of: + +2022-04-15 13:19:36 +0000 Corentin Damman + + * sys/nvcodec/gstcudautils.c: + cudautils: fix critical typo in gst_cuda_buffer_fallback_copy + Part-of: + +2022-04-14 20:10:46 +1000 Brad Hards + + * po/POTFILES.skip: + * tests/interactive/meson.build: + * tests/interactive/pitch-test.c: + * tests/meson.build: + tests: rename 'icles' subdir to be more descriptive + Part-of: + +2022-04-14 08:23:51 +0200 Edward Hervey + + * gst/mpegtsdemux/gstmpegdefs.h: + * gst/mpegtsdemux/tsdemux.c: + tsdemux: Fix AC-4 detection + This regression was introduced by + https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1102 + and has been present since 1.18 + * Stream Type 0x06 is defined in the base mpeg-ts specification as Private PES + Packets. Determining the content should be solely based on descriptors found + within the PMT. + * This was abused in that commit by defining a "bluray-only" stream type for AC4 + : `ST_BD_AUDIO_AC4` + * This should be entirely handled in the regular private pes handling further + down in the code + Fixes #1154 + Part-of: + +2022-04-10 17:28:03 +0800 He Junyan + + * sys/va/gstvah264enc.c: + va: h264enc: Correct the hierarchical level name for pyramid-b frames. + The current way names the level by the number of B frames it contains, the + less it contains, the higher level it is. So the non ref B frames are in the + lowest layer and the B frames in the highest level refer to I/P frames. + But the widely used way is just the opposite, the ref B frames are in the + lower level and non ref B frames are at the highest level. + The is just a terminology change, and does not have any effect for compression + result and quality. + Part-of: + +2022-04-12 10:34:27 +0800 He Junyan + + * gst-libs/gst/codecparsers/gstav1parser.c: + codecs: av1parser: Fix a typo in seq_level_idx check. + Part-of: + +2022-04-13 01:46:34 +0900 Seungha Yang + + * sys/amfcodec/gstamfh265enc.cpp: + amfh265enc: Handle preset option + Add missing preset option handling + Part-of: + +2022-04-13 01:39:43 +0900 Seungha Yang + + * sys/amfcodec/gstamfencoder.cpp: + amfencoder: Do shared resource copy only if texture belongs to other device + Staging texture from the same d3d11device can be copied without + shared resource handling + Part-of: + +2022-04-12 01:01:23 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.cpp: + * sys/d3d11/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: + +2022-04-11 16:03:41 -0500 Olivier Crête + + * ext/wpe/gstwpevideosrc.cpp: + wpevideosrc: Give WebKit the keyboard, touch and pointer modifiers + Part-of: + +2022-04-11 15:56:19 -0500 Olivier Crête + + * ext/wpe/gstwpevideosrc.cpp: + wpesrc: Convert from utf32 to support other keys + This makes all of the non-letter keys work. + Part-of: + +2022-04-11 15:54:05 -0500 Olivier Crête + + * ext/wpe/gstwpevideosrc.cpp: + wpesrc: Initialize key event to 0 + Otherwise, WebKit sees random modifiers + Part-of: + +2022-04-12 11:20:00 +0200 Andoni Morales Alastruey + + * sys/amfcodec/gstamfh264enc.cpp: + amfcodec: fix setting quality presets + Part-of: + +2022-04-11 10:32:40 +0200 Edward Hervey + + * gst/mxf/mxfdemux.c: + mxfdemux: Fix issue with re-syncing + In case of re-syncing (i.e. moving to another partition to avoid too much of an + interleave), there was previously no checks to figure out whether a given + partition was already fully handled (i.e. when coming across it again after a + previous resync). + In order to handle this at least for single-track partitions, check whether we + have reached the essence track duration, and if so skip the partition. + Part-of: + +2022-04-11 10:31:15 +0200 Edward Hervey + + * gst/mxf/mxfdemux.c: + mxfdemux: Don't double-increase track position + The essence track position should only be overriden if we sucesfully switched to + another position. In case of EOS we do not want to override it else we would + increase the track position *again* at the end of this function + Part-of: + +2022-04-12 01:49:17 +0900 Seungha Yang + + * sys/amfcodec/gstamfencoder.cpp: + * sys/amfcodec/gstamfh264enc.cpp: + * sys/amfcodec/gstamfh265enc.cpp: + * sys/amfcodec/meson.build: + amfcodec: Fix for MinGW build + timeapi.h header might not be missing depending on toolchain. + Also do hard meson error if winmm dep is not available but + amfcodec is explicitly enabled. + And fixing various GCC build warning errors. + Part-of: + +2022-04-09 23:32:19 +0900 Seungha Yang + + * sys/qsv/gstqsvallocator.cpp: + * sys/qsv/gstqsvallocator_d3d11.cpp: + * sys/qsv/gstqsvencoder.cpp: + * sys/qsv/gstqsvjpegenc.cpp: + * sys/qsv/gstqsvjpegenc.h: + * sys/qsv/meson.build: + * sys/qsv/plugin.cpp: + qsv: Add JPEG encoder + Note that YUY2 is not supported yet, since the format support is not + implemented now. + Part-of: + +2022-04-10 02:34:17 +0900 Seungha Yang + + * docs/plugins/gst_plugins_cache.json: + * sys/amfcodec/gstamfencoder.cpp: + * sys/amfcodec/gstamfh264enc.cpp: + * sys/amfcodec/gstamfh265enc.cpp: + * sys/amfcodec/plugin.cpp: + amfcodec: Update plugin cache + Part-of: + +2022-04-09 00:52:07 +0900 Seungha Yang + + * sys/nvcodec/gstnvencoder.cpp: + * sys/nvcodec/gstnvencoder.h: + * sys/nvcodec/gstnvh264encoder.cpp: + * sys/nvcodec/gstnvh265encoder.cpp: + * tests/examples/nvcodec/nvcodec.c: + nvencoder: Update property names and default values + Update properties of newly written D3D11/CUDA mode encoders + to be consistent with Intel QSV plugin. And rename "zerolatency" + to "zero-reorder-delay" because previous "zerolatency" may + misleading + Part-of: + +2022-04-09 00:00:59 +0900 Seungha Yang + + * sys/qsv/gstqsvh264enc.cpp: + * sys/qsv/gstqsvh265enc.cpp: + * sys/qsv/gstqsvvp9enc.cpp: + * tests/examples/qsv/qsvenc-dynamic-reconfigure.c: + qsvencoder: Update property names and default values + Stop using MSDK plugins property naming, instead use unified names + and default values to be consistent with newly written NVIDIA encoders. + Part-of: + +2022-03-31 04:16:24 +0900 Seungha Yang + + * meson_options.txt: + * sys/amfcodec/gstamfencoder.cpp: + * sys/amfcodec/gstamfencoder.h: + * sys/amfcodec/gstamfh264enc.cpp: + * sys/amfcodec/gstamfh264enc.h: + * sys/amfcodec/gstamfh265enc.cpp: + * sys/amfcodec/gstamfh265enc.h: + * sys/amfcodec/gstamfutils.cpp: + * sys/amfcodec/gstamfutils.h: + * sys/amfcodec/meson.build: + * sys/amfcodec/plugin.cpp: + * sys/meson.build: + amfcodec: Add support for h264/h265 encoding + New encoder implementations for AMD GPU using AMF API + Part-of: + +2022-03-31 01:36:37 +0900 Seungha Yang + + * sys/amfcodec/include/components/ColorSpace.h: + * sys/amfcodec/include/components/Component.h: + * sys/amfcodec/include/components/ComponentCaps.h: + * sys/amfcodec/include/components/PreAnalysis.h: + * sys/amfcodec/include/components/VideoDecoderUVD.h: + * sys/amfcodec/include/components/VideoEncoderHEVC.h: + * sys/amfcodec/include/components/VideoEncoderVCE.h: + * sys/amfcodec/include/core/AudioBuffer.h: + * sys/amfcodec/include/core/Buffer.h: + * sys/amfcodec/include/core/Compute.h: + * sys/amfcodec/include/core/ComputeFactory.h: + * sys/amfcodec/include/core/Context.h: + * sys/amfcodec/include/core/CurrentTime.h: + * sys/amfcodec/include/core/D3D12AMF.h: + * sys/amfcodec/include/core/Data.h: + * sys/amfcodec/include/core/Debug.h: + * sys/amfcodec/include/core/Dump.h: + * sys/amfcodec/include/core/Factory.h: + * sys/amfcodec/include/core/Interface.h: + * sys/amfcodec/include/core/Plane.h: + * sys/amfcodec/include/core/Platform.h: + * sys/amfcodec/include/core/PropertyStorage.h: + * sys/amfcodec/include/core/PropertyStorageEx.h: + * sys/amfcodec/include/core/Result.h: + * sys/amfcodec/include/core/Surface.h: + * sys/amfcodec/include/core/Trace.h: + * sys/amfcodec/include/core/Variant.h: + * sys/amfcodec/include/core/Version.h: + * sys/amfcodec/include/core/VulkanAMF.h: + amfcodec: Import AMF SDK headers + SDK version v1.4.24 at the commit of + https://github.com/GPUOpen-LibrariesAndSDKs/AMF/commit/fbf12cd39fe1812ed902525a1c001307b94871b9 + Part-of: + +2022-04-09 02:13:57 +0900 Seungha Yang + + * sys/msdk/gstmsdkcontextutil.c: + msdk: Fix Windows build + Headers of gstva should not be included on Windows + Part-of: + +2022-04-08 04:24:36 +0900 Seungha Yang + + * sys/d3d11/gstd3d11window_win32.cpp: + d3d11window: Use ANSI version WIN32 API explicitly + We were using ANSI version APIs implicitly because UNICODE is not + defined by ourselves. But potentially it can be broken if user + defines UNICODE. + Part-of: + +2022-04-08 04:02:55 +0900 Seungha Yang + + * sys/d3d11/gstd3d11av1dec.cpp: + * sys/d3d11/gstd3d11screencapturesrc.cpp: + * sys/d3d11/gstd3d11videosink.cpp: + d3d11: Run indent + Part-of: + +2022-03-11 20:46:11 +0900 Seungha Yang + + * gst-libs/gst/codecparsers/gsth265parser.c: + * gst-libs/gst/codecparsers/gsth265parser.h: + h265parser: Fix short_term_ref_pic_set() size calculation + This field is used by DXVA/NVDEC/VA, and each specification + describes (NVDEC is not well documented) that it's the number of + bits used in short_term_ref_pic_set(). + DXVA doesn't explicitly mention that whether the size of + emulation preventation bytes (EPB) is inclusive or not, but + VA is clearly specifying that it's the size after removing + EPB. Excluding EPB size here makes more sense therefore. + Part-of: + +2022-04-06 11:21:25 +0200 Edward Hervey + + * gst/mxf/mxfvanc.c: + mxfvanc: Handle empty VANC packets + Some XDCAM recorders store empty packets for VANC, and don't even include the + 2byte length. + Handle them in the same way as VANC packets with 0 packets. + Part-of: + +2022-04-01 22:52:18 +0900 Sangchul Lee + + * gst-libs/gst/webrtc/datachannel.c: + * gst-libs/gst/webrtc/webrtc_fwd.h: + webrtc/datachannel: Change initial data channel state to CONNECTING + It complies with http://w3c.github.io/webrtc-pc/#dom-rtcdatachannelstate. + Part-of: + +2022-04-04 20:47:03 +0900 Seungha Yang + + * sys/qsv/gstqsvencoder.cpp: + qsvencoder: Don't use USAGE_HINT_ENCODER and enable derived image support + Peformance issue by disabled derived image support was reported + Part-of: + +2022-04-04 20:36:14 +0900 Seungha Yang + + * sys/va/gstvah264enc.c: + Revert "vah264enc: Disable derived image support" + This reverts commit 0011feb0d660f331abde5b1e36f1c56e9cf3b014. + The commit caused performance-wise regression for some platforms + Part-of: + +2022-04-01 15:35:17 +0800 Tong Wu + + * sys/msdk/msdk.c: + msdk: use mfxU32 instead of uint32_t + Msdk should use mfx variables defined in mfxdefs.h. Replace uint32_t + with mfxU32. + Part-of: + +2022-04-01 15:00:01 +0200 Stéphane Cerveau + + * tests/examples/camerabin2/gst-camerabin2-test.c: + bad: examples: fix unused res warning + Part-of: + +2022-03-29 14:42:04 +0200 Johan Sternerup + + * ext/webrtc/gstwebrtcice.c: + * ext/webrtc/icestream.c: + * ext/webrtc/icestream.h: + * ext/webrtc/nicetransport.c: + webrtc: Improve robustness of nice agent signal handlers + NiceAgent and it's associated thread is alive for as long as + GstWebRTCICE is alive so make sure any signal handlers connected to + NiceAgent do not access data that is deleted earlier. + Part-of: + +2022-04-03 22:12:33 +0900 Seungha Yang + + * sys/nvcodec/gstnvh264encoder.cpp: + * sys/nvcodec/gstnvh265encoder.cpp: + nvcodec: Fix typos + Part-of: + +2022-04-03 22:08:51 +0900 Seungha Yang + + * sys/nvcodec/gstnvencoder.h: + nvencoder: Fix operator overloading + GUID equality check was inverted + Part-of: + +2022-04-01 21:09:10 +0100 Tim-Philipp Müller + + * gst-libs/gst/va/meson.build: + libs: va: make sure va-enumtypes.h is generated before it's used + Need to add a dep for the generated header file to the dependency() + so that it gets generated before anyone tries to #include files + from it (which may happen before the actual lib is built because + that's only needed when stuff is linked together later). + See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2057#note_1323236 + and CI build failures in https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2096 + Part-of: + +2022-04-01 05:02:58 +0900 Seungha Yang + + * sys/va/gstvah264enc.c: + vah264enc: Disable derived image support + Behavior of derived image seems to be platform dependent and + it's buggy in some cases. + Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1110 + Part-of: + +2022-04-01 22:47:07 +0800 He Junyan + + * sys/va/gstvah264enc.c: + va: h264enc: Do not use USAGE_HINT_ENCODER for input pool. + It seems that the VA_SURFACE_ATTRIB_USAGE_HINT_ENCODER is used only + for the recon surfaces, if we set this flags for input raw surfaces, + the alignment is wrong and we get broken result. + Part-of: + +2022-04-01 15:59:58 -0400 Nicolas Dufresne + + * gst-libs/gst/va/gstvaallocator.c: + va: Fix printf format modifier for drm modifiers + DRM modifiers are 64bit, the printf modifier is platform dependant. Use + the G_GINT64_MODIFIER macro to make this printf portable. + Part-of: + +2022-03-30 11:06:02 -0400 Xavier Claessens + + * 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: + +2022-03-25 15:00:20 -0400 Xavier Claessens + + * ext/vulkan/meson.build: + * ext/webrtc/meson.build: + * gst-libs/gst/d3d11/meson.build: + * gst/rtp/meson.build: + * meson.build: + * sys/bluez/meson.build: + * sys/dvb/meson.build: + * tests/check/meson.build: + * tests/examples/ipcpipeline/meson.build: + * tests/examples/opencv/meson.build: + * tests/examples/webrtc/meson.build: + * tests/examples/wpe/meson.build: + * tests/icles/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: + +2022-03-24 14:15:00 -0400 Xavier Claessens + + * ext/sctp/usrsctp/meson.build: + * meson.build: + Fix cross build with mingw32 + At least on Ubuntu 20.04 the x86_64-w64-mingw32-gcc toolchain defaults + to WinXP. We require at least Vista for FILE_STANDARD_INFO. + Part-of: + +2022-03-25 22:04:05 +0900 Seungha Yang + + * sys/qsv/gstqsvallocator_va.cpp: + * sys/qsv/gstqsvencoder.cpp: + * sys/qsv/gstqsvh264enc.cpp: + * sys/qsv/gstqsvh265enc.cpp: + * sys/qsv/gstqsvvp9enc.cpp: + qsvencoder: Add support for VA memory + Use VA allocator and buffer pool implementation for zero-copy + encoding with upstream VA elements + Part-of: + +2022-03-25 21:03:02 +0900 Seungha Yang + + * sys/qsv/gstqsvallocator_va.h: + * sys/qsv/gstqsvdecoder.cpp: + * sys/qsv/gstqsvencoder.cpp: + qsv: Use pipeline's VA context + Part-of: + +2022-03-29 14:52:33 +0200 Víctor Manuel Jáquez Leal + + * gst-libs/gst/va/gstva.h: + * gst-libs/gst/va/gstvaallocator.c: + * gst-libs/gst/va/gstvaallocator.h: + * gst-libs/gst/va/gstvapool.c: + * gst-libs/gst/va/gstvapool.h: + * gst-libs/gst/va/meson.build: + * sys/va/gstvabasedec.c: + * sys/va/gstvabasetransform.c: + * sys/va/gstvaencoder.c: + * sys/va/gstvah264enc.c: + libs: va: add VA allocator parameter for derived images usage. + Added GstVaFeature enum type, and new parameter for VA allocator's + set_format() and get_format(). Also added a new parameter in VA pool + gst_va_pool_new_with_config() and + gst_buffer_pool_config_set_va_allocation_params(). + This new parameter will define if derived images will by used for + buffer mapping. + Part-of: + +2022-03-28 21:25:50 +0900 Sangchul Lee + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/gstwebrtcstats.c: + * tests/check/elements/webrtcbin.c: + webrtcstats: Unify 'packets-lost' data type to int64 + Previously, 'packets-lost' member of RTCReceivedRtpStreamStats had + a value of G_TYPE_INT from rtpsource or a value of G_TYPE_UINT64 + from rtpjitterbuffer. + Because of the negative value of estimated amount of packets lost + in rtpsource as well as the description in + https://www.w3.org/TR/webrtc-stats/#dom-rtcreceivedrtpstreamstats + it is fixed to set this value with G_TYPE_INT64. + Part-of: + +2022-03-30 12:12:34 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvaencoder.c: + va: encoder: Remove unused allocation config. + Since it's also done inside of gst_va_pool_new_with_config(). + Part-of: + +2022-03-30 02:49:40 +0900 Seungha Yang + + * gst-libs/gst/va/gstvadisplay.c: + * gst-libs/gst/va/gstvautils.c: + vadisplay: Add description readonly property + Expose description of vendor for user information, similar to + the description property of d3d11device. + Also, set description and DRM device path on GstContext structure + so that user can read them and it will be printed on terminal + when gst-launch-1.0 is used + Part-of: + +2022-03-30 07:03:59 +0200 Víctor Manuel Jáquez Leal + + * gst-libs/gst/va/gstvaallocator.c: + * gst-libs/gst/va/gstvapool.c: + * gst-libs/gst/va/gstvapool.h: + * gst-libs/gst/va/va_fwd.h: + va: Don't expose internal classes. + VA allocators and pools classes don't need to be exposed as external + symbols. + Part-of: + +2022-03-30 12:01:20 +0800 Haihua Hu + + * gst-libs/gst/play/gstplay.c: + gstplay: don't print error log in warning_cb + Part-of: + +2022-03-29 20:14:40 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvavpp.c: + vapostproc: Build classification dynamically. + By default, the classification is + "Converter/Filter/Colorspace/Scaler/Video/Hardware", but if VA + post-processor driver supports either color balance, skin tone + enhancement, sharpening or noise reduction, "Effect" is added. + Thus, if vapostproc ranking is raised, it can be chosen by + autovideosink. + Part-of: + +2022-02-21 14:02:52 +1100 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/gstwebrtcbin.h: + * ext/webrtc/gstwebrtcstats.c: + webrtc: produce stats for all relevant streams + Instead of only using the last ssrc that was pushed into a sink pad. + Part-of: + +2022-02-11 16:50:42 +1100 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + webrtc: avoid different versions of gnu-indent always wanting to change !! + Add some sneaky parenthesis to avoid always having to use git commit -n + or revert out hunk of the change. + Part-of: + +2021-11-26 22:04:14 +1100 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/transportstream.c: + * ext/webrtc/transportstream.h: + * tests/check/elements/webrtcbin.c: + webrtc: implement initial simulcast fec/rtx usage + Part-of: + +2021-11-26 22:11:06 +1100 Matthew Waters + + * ext/webrtc/webrtcdatachannel.c: + * gst-libs/gst/webrtc/datachannel.c: + webrtc/datachannel: fix use-after-free in sctp state notification + g_signal_disconnect*() doesn't stop any existing callbacks from running + which means that if the notify::state callback is in progress in one + thread and the data channel object is finalize()ed in another thread, + then there could be a use-after-free trying lock the data channel + object. + We can't reasonably use a GWeakRef as we don't have a 'parent' object to + free the GWeakRef after the data channel is finalized. This is also + complicated by the fact that the application can hold a reference to the + data channel object that would live beyond the lifetime of webrtcbin + itself. + We solve this by implementing a ghetto weak-ref solution internally with + a list of outstanding data channels. + Part-of: + +2021-11-26 22:06:39 +1100 Matthew Waters + + * tests/check/elements/webrtcbin.c: + tests/webrtc: fix a use-after-free in test_data_channel_close + g_object_weak_ref() is not thread-safe and the data channel object's + refs/unrefs can happen on multiple threads. + Part-of: + +2021-11-26 21:51:57 +1100 Matthew Waters + + * tests/check/elements/webrtcbin.c: + tests/webrtc: fix a race in the tests related to state tracking + If things progress fast enough, some state changes may not be seen be + the waiting code. + Fix by: + 1. keeping a list of all the state changes + 2. waiting checks each entry and if the relevant state is found, all + states up to and including then are removed. + This ensures that any waits will see all the state sets. + Part-of: + +2021-11-26 02:00:12 +1100 Matthew Waters + + * tests/check/elements/webrtcbin.c: + tests/webrtc: factor out src pad property checking to a separate function + Part-of: + +2021-11-16 19:27:11 +1100 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/gstwebrtcstats.c: + * ext/webrtc/transportstream.c: + * ext/webrtc/transportstream.h: + * ext/webrtc/webrtctransceiver.c: + * ext/webrtc/webrtctransceiver.h: + * tests/check/elements/webrtcbin.c: + webrtcbin: initial support for sending and receiving simulcast streams + Input (sink pads) is the already-ssrc-muxed stream with the relevant rtp + sdes header extensions already applied: + - mid + - stream-id + - repaired-stream-id + Output (src pads) have the pads separated into individual ssrc's as + that's what rtpbin gives us. + Part-of: + +2021-11-16 18:11:49 +1100 Matthew Waters + + * tests/check/elements/webrtcbin.c: + tests/webrtc: test for enabled bundled fec/rtx + Doesn't actually check that any fec/rtx happens, just that the pipeline + is vaguely sane and doesn't error. + Part-of: + +2021-11-16 17:39:18 +1100 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: support multiple received streams for a single mline + Each rtpbin exposed recv_src pad is now exposed as webrtcbin src_%u pad + now with no meaining applied to the value of %u. Previously this used + to mean the mline in the SDP. If this is is still required, then the + transceiver can be retrieved from the pad and the "mlineindex" property + from the transciever. The "mid" is also retrievable from the + transceiver. + Part-of: + +2021-11-16 17:28:04 +1100 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + * gst-libs/gst/webrtc/webrtc_fwd.h: + webrtc: explicitly error out in a couple of renegotiation cases + Part-of: + +2021-11-16 17:21:31 +1100 Matthew Waters + + * ext/webrtc/transportstream.c: + webrtc/transportstream: add debug category + Part-of: + +2021-11-03 21:18:53 +1100 Matthew Waters + + * tests/check/elements/webrtcbin.c: + tests/webrtc: also check valid mline for srcpad codec-preferences negotiation + Part-of: + +2021-11-03 20:46:23 +1100 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/gstwebrtcbin.h: + webrtcbin: don't name src pads based on the mline specifically anymore + Naming based on the mline doesn't really work with e.g. simulcast + scenarios. + It is entirely possible to retrieve the transceiver and then the mline + from that if that is so required. + Part-of: + +2021-10-29 18:40:04 +1100 Matthew Waters + + * tests/check/elements/webrtcbin.c: + webrtc/tests: print the correct media idx on error + Instead of the attribute index + Part-of: + +2021-10-29 18:38:37 +1100 Matthew Waters + + * tests/check/elements/webrtcbin.c: + webrtc/tests: give slightly better names to the dot file dumps + Don't use printf-specifiers with g_strconcat(). + Part-of: + +2021-07-21 17:48:34 +1000 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/utils.h: + * tests/check/elements/webrtcbin.c: + webrtcbin: improve some debugging output + - Put human readable names into debug strings. + - Demote some frequent rtpbin signal logging + - Don't use GST_PTR_FORMAT in g_set_error() + Part-of: + +2021-07-21 17:39:11 +1000 Matthew Waters + + * tests/check/elements/webrtcbin.c: + webrtcbin: silence spurious warning when creating answer transceiver + When creating a transceiver when creating an answer, the media kind of the + transceiver was never set correctly initially. This would lead to a + GST_WARNING being produced about changin a transceiver's media kind. + Fix by retrieving the GstSDPMedia kind from the offer instead as the answer + GstSDPMedia has not been set as the answer caps have not been chosen yet. + Part-of: + +2021-07-21 14:29:35 +1000 Matthew Waters + + * tests/check/elements/webrtcbin.c: + tests/webrtc: always use a unique SSRC for each stream + Will become more relevant with mid/rid->ssrc mappings + Part-of: + +2021-07-21 14:14:30 +1000 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: add a specific find_transceiver_by_mid function + Part-of: + +2021-07-20 20:17:13 +1000 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: explicitly use a variable for the rtp session idx + Slightly clearer in meaning. + Part-of: + +2021-07-01 15:54:34 +1000 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + * tests/check/elements/webrtcbin.c: + webrtcbin: support using an a=mid value from the sink/transceiver caps + Part-of: + +2022-03-25 15:56:01 +0100 Víctor Manuel Jáquez Leal + + * gst-libs/gst/va/gstva.h: + * gst-libs/gst/va/gstvaallocator.h: + * gst-libs/gst/va/gstvadisplay.c: + * gst-libs/gst/va/gstvadisplay.h: + * gst-libs/gst/va/gstvadisplay_drm.c: + * gst-libs/gst/va/gstvadisplay_drm.h: + * gst-libs/gst/va/gstvadisplay_wrapped.h: + * gst-libs/gst/va/gstvapool.c: + * gst-libs/gst/va/gstvapool.h: + * gst-libs/gst/va/gstvasurfacecopy.h: + * gst-libs/gst/va/gstvautils.c: + * gst-libs/gst/va/gstvautils.h: + * gst-libs/gst/va/gstvavideoformat.h: + * gst-libs/gst/va/va_fwd.h: + * gst-libs/gst/va/vasurfaceimage.h: + * sys/va/gstvaav1dec.c: + * sys/va/gstvabasedec.c: + * sys/va/gstvabasetransform.c: + * sys/va/gstvacaps.c: + * sys/va/gstvadecoder.c: + * sys/va/gstvadeinterlace.c: + * sys/va/gstvadisplay_priv.c: + * sys/va/gstvadisplay_priv.h: + * sys/va/gstvaencoder.c: + * sys/va/gstvaencoder.h: + * sys/va/gstvafilter.c: + * sys/va/gstvah264enc.c: + * sys/va/gstvavpp.c: + * tests/examples/va/main.c: + * tests/examples/va/multiple-vpp.c: + va: Set as library single point entry header. + Part-of: + +2022-02-23 15:40:19 +0800 He Junyan + + * gst-libs/gst/va/gstvaallocator.c: + * gst-libs/gst/va/gstvaallocator.h: + * gst-libs/gst/va/gstvapool.c: + * gst-libs/gst/va/gstvapool.h: + * gst-libs/gst/va/gstvasurfacecopy.c: + * gst-libs/gst/va/gstvasurfacecopy.h: + * gst-libs/gst/va/meson.build: + * gst-libs/gst/va/vasurfaceimage.c: + * gst-libs/gst/va/vasurfaceimage.h: + * sys/va/gstvaav1dec.c: + * sys/va/gstvabasedec.c: + * sys/va/gstvabasetransform.c: + * sys/va/gstvadecoder.c: + * sys/va/gstvadeinterlace.c: + * sys/va/gstvaencoder.c: + * sys/va/gstvafilter.c: + * sys/va/gstvah264enc.c: + * sys/va/gstvavpp.c: + * sys/va/meson.build: + va: Move allocators and pool objects into gstva library. + In order to other plugins use gstva objects, such as allocators and buffer + pools, this merge request move them from the va plugin to the gstva library. + This objects are not exposed in since they are not expected + to be used by users, only by plugin implementators. + Because of the surface copy design, which is used to implement allocator's + mem_copy() virtual function, depends on the vafilter, which is kept inside + the plugin, memory copy through VAPosproc is disabled and removed temporarly. + Also added some missing parameter validation. + Part-of: + +2022-02-23 15:25:08 +0800 He Junyan + + * gst-libs/gst/va/gstvavideoformat.c: + * gst-libs/gst/va/gstvavideoformat.h: + * gst-libs/gst/va/meson.build: + * sys/va/gstvaallocator.c: + * sys/va/gstvabasedec.c: + * sys/va/gstvacaps.c: + * sys/va/gstvadecoder.c: + * sys/va/gstvadisplay_priv.c: + * sys/va/gstvafilter.c: + * sys/va/meson.build: + * sys/va/vasurfaceimage.c: + va: Move the video format functions into gstlibva. + Untabifying header file. + The logging category was moved from the plugin generic category to + the display category. It can argue that video formats hacks are + display dependant. + Added validations for input parameters. + Part-of: + +2022-03-27 23:27:54 +0900 Seungha Yang + + * sys/qsv/gstqsvencoder.cpp: + * sys/qsv/gstqsvencoder.h: + * sys/qsv/gstqsvh264enc.cpp: + * sys/qsv/gstqsvh265enc.cpp: + * sys/qsv/gstqsvvp9enc.cpp: + * tests/examples/meson.build: + * tests/examples/qsv/key-handler.c: + * tests/examples/qsv/key-handler.h: + * tests/examples/qsv/meson.build: + * tests/examples/qsv/qsvenc-dynamic-reconfigure.c: + qsvencoder: Add support for dynamic bitrate update + ... and add more encoding options. + QSV API supports dynamic bitrate change without IDR insertion. + That's more efficient way of runtime encoding option update + than starting from new sequence with IDR per bitrate option change. + Part-of: + +2022-03-25 23:15:33 +0900 Seungha Yang + + * sys/qsv/gstqsvh265enc.cpp: + qsvh265enc: Add missing gop-size property + Part-of: + +2022-03-25 21:13:22 +0900 Seungha Yang + + * sys/qsv/gstqsvallocator.cpp: + qsv: Fix mfxFrameAllocator::Lock for encoder + Only read map is possible for encoder input system memory + Part-of: + +2022-03-28 20:51:35 +1100 Matthew Waters + + * sys/applemedia/videotexturecache.m: + applemeida/texturecache: remove unused variable + Fixes: + ../sys/applemedia/videotexturecache.m:71:20: error: variable 'features' set but not used [-Werror,-Wunused-but-set-variable] + GstCapsFeatures *features; + ^ + Part-of: + +2022-03-28 20:50:27 +1100 Matthew Waters + + * sys/applemedia/corevideobuffer.c: + applemedia/corevideobuffer: remove unused variable + Fixes: + ../sys/applemedia/corevideobuffer.c:209:19: error: variable 'video_meta' set but not used [-Werror,-Wunused-but-set-variable] + GstVideoMeta *video_meta; + ^ + Part-of: + +2022-03-28 20:49:01 +1100 Matthew Waters + + * sys/applemedia/iosurfaceglmemory.c: + applemedia/iosgl: remove unused variable + Fixes: + ../sys/applemedia/iosurfaceglmemory.c:219:41: error: variable 'texfmt' set but not used [-Werror,-Wunused-but-set-variable] + GLuint tex_id, tex_target, texifmt, texfmt; + ^ + Part-of: + +2022-03-28 20:37:54 +1100 Matthew Waters + + * sys/applemedia/vtdec.c: + vtdec: remove unused variable + Fixes: + ../sys/applemedia/vtdec.c:611:35: error: variable 'output_flags' set but not used [-Werror,-Wunused-but-set-variable] + VTDecodeFrameFlags input_flags, output_flags; + ^ + Part-of: + +2022-03-28 20:24:59 +1100 Matthew Waters + + * sys/applemedia/avsamplevideosink.m: + avsamplevideosink: remove unused variable + Fixes + ../sys/applemedia/avsamplevideosink.m:80:20: error: variable 'gstelement_class' set but not used [-Werror,-Wunused-but-set-variable] + GstElementClass *gstelement_class; + ^ + Part-of: + +2022-03-28 20:11:29 +1100 Matthew Waters + + * sys/applemedia/avfassetsrc.m: + avfassetsrc: fix unused-but-set warning + ../sys/applemedia/avfassetsrc.m:1014:12: error: variable 'caps' set but not used [-Werror,-Wunused-but-set-variable] + GstCaps *caps; + ^ + Part-of: + +2022-03-28 19:42:04 +1100 Matthew Waters + + * gst/speed/gstspeed.c: + speed: fix unused-but-set warning + ../gst/speed/gstspeed.c:523:39: error: variable 'base' set but not used [-Werror,-Wunused-but-set-variable] + gint64 start_value, stop_value, base; + ^ + Part-of: + +2022-03-28 18:38:23 +1100 Matthew Waters + + * ext/resindvd/gstpesfilter.c: + resindvd: silence unused-but-set warning + ../ext/resindvd/gstpesfilter.c:117:11: error: variable 'STD_buffer_size_bound' set but not used [-Werror,-Wunused-but-set-variable] + guint16 STD_buffer_size_bound; + ^ + Part-of: + +2022-03-28 18:23:20 +1100 Matthew Waters + + * gst/mpegtsmux/gstbasetsmux.c: + mpegts: don't shadow res variable + Fixes unused-but-set warning: + ../gst/mpegtsmux/gstbasetsmux.c:2115:43: error: variable 'res' set but not used [-Werror,-Wunused-but-set-variable] + gboolean all_headers, done = FALSE, res = FALSE; + ^ + Part-of: + +2022-03-28 18:12:43 +1100 Matthew Waters + + * gst-libs/gst/mpegts/gst-dvb-section.c: + mpeg: fix unused-but-set warning + ../gst-libs/gst/mpegts/gst-dvb-section.c:206:9: error: variable 'i' set but not used [-Werror,-Wunused-but-set-variable] + guint i = 0, allocated_events = 12; + ^ + ../gst-libs/gst/mpegts/gst-dvb-section.c:365:9: error: variable 'i' set but not used [-Werror,-Wunused-but-set-variable] + guint i = 0, allocated_streams = 12; + ^ + ../gst-libs/gst/mpegts/gst-dvb-section.c:543:9: error: variable 'i' set but not used [-Werror,-Wunused-but-set-variable] + guint i = 0, allocated_streams = 12; + ^ + ../gst-libs/gst/mpegts/gst-dvb-section.c:885:9: error: variable 'i' set but not used [-Werror,-Wunused-but-set-variable] + guint i = 0, allocated_services = 8; + ^ + ../gst-libs/gst/mpegts/gst-dvb-section.c:1316:9: error: variable 'i' set but not used [-Werror,-Wunused-but-set-variable] + guint i = 0, allocated_services = 8; + ^ + Part-of: + +2022-03-28 10:10:45 +0300 Sebastian Dröge + + * docs/plugins/gst_plugins_cache.json: + video-format: Move NV12_8L128 into the correct position in GST_VIDEO_FORMATS_ALL + Part-of: + +2022-03-28 15:56:22 +1100 Matthew Waters + + * gst/mpegdemux/gstpesfilter.c: + mpegdemux: silence unused-but-set werror + ../gst/mpegdemux/gstpesfilter.c:117:11: error: variable 'STD_buffer_size_bound' set but not used [-Werror,-Wunused-but-set-variable] + guint16 STD_buffer_size_bound; + ^ + Part-of: + +2022-03-25 14:25:02 +1100 Andrew Pritchard + + * sys/androidmedia/jni/gstamcsurfacetexture-jni.c: + Fix GstAmcSurfaceTexture segfault Check that `self` and `self->callback` are defined. `self` can be set to `NULL` in `remove_listener`, and `self->callback` can be set to `NULL` inside `gst_amc_surface_texture_jni_set_on_frame_available_callback`. This can cause a segfault since the Java object can outlive the C object, and call the callback after `remove_listener` is called. + Part-of: + +2022-03-23 17:31:37 +1100 Matthew Waters + + * ext/closedcaption/gstccconverter.c: + * ext/closedcaption/gstccconverter.h: + * tests/check/elements/ccconverter.c: + ccconverter: ensure correct ordering of cea608 across output buffers + e.g. if a 60fps output is configured, we can only produce a single field + of cea608 that must alternate between field 1 and field 2. + Part-of: + +2022-03-23 15:13:10 +1100 Matthew Waters + + * ext/closedcaption/gstccconverter.c: + * tests/check/elements/ccconverter.c: + ccconverter: ignore padding cea608 data even if marked as 'valid' + Part-of: + +2022-03-23 10:36:28 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2decoder.c: + v4l2codecs: Detect missing M2M_HOLD_CAPTURE_BUF + Produce an error if we try to use the feature of holding capture buffer + but it is not supported by the driver. Ingoring this can lead to stalls + as the driver will run-out of capture buffer to decode into. This + affects slice decoders but also split-field interlaced decoding. + Part-of: + +2022-03-23 09:11:35 -0400 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codech264dec.c: + v4l2codecs: h264: Set other field poc if available + Whenever the other field POC is available, pass it back to the + driver. This should not be strictly required, but it makes things + easier to debug and more forgiven. + Part-of: + +2021-12-21 10:59:37 -0500 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codech264dec.c: + * sys/v4l2codecs/gstv4l2decoder.c: + * sys/v4l2codecs/gstv4l2decoder.h: + v4l2codecs: Trace request by it FD + This helps when crossing the debug logs with the kernel logs. + Part-of: + +2021-12-21 10:55:58 -0500 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codech264dec.c: + v4l2codecs: h264: Fix dpb entry flag FLAG_FIELD + The logic to guess back this value was broken. Use the value + now saved into the picture instead. This was tested using + LibreELEC patched 5.15 kernel, and fixed the interlaced decode + issues. + Part-of: + +2021-12-21 10:52:32 -0500 Nicolas Dufresne + + * gst-libs/gst/codecs/gsth264decoder.c: + * gst-libs/gst/codecs/gsth264picture.h: + codecs: h264: Save the field_pic_flag + This flag is set when the stream is interlaced and the specific + slice is made of single parity fields rather the paired at the + macroblock layer. This is rarely needed in late decoding process + but the Rockchip RKVDEC HW interface requires it, hence needs to + be passed through V4L2 Stateless interface. + Part-of: + +2022-03-25 13:26:52 -0400 Xavier Claessens + + * tests/examples/d3d11/d3d11device.cpp: + d3d11: Fix example build error + ``` + ../subprojects/gst-plugins-bad/tests/examples/d3d11/d3d11device.cpp:129:50: error: invalid conversion from ‘int’ to ‘DXGI_FORMAT’ [-fpermissive] + 129 | D3D11_SHADER_RESOURCE_VIEW_DESC srv_desc = { 0, }; + ``` + Part-of: + +2022-03-18 16:59:32 +0000 Thibault Saunier + + * ext/directfb/dfbvideosink.c: + * ext/opencv/gsthanddetect.cpp: + * ext/vulkan/vksink.c: + * sys/d3d11/gstd3d11videosink.cpp: + * sys/d3dvideosink/d3dhelpers.c: + * tests/check/pipelines/ipcpipeline.c: + navigation: Add support for key Modifiers in all relevant events + Part-of: + +2022-03-24 21:39:30 +0800 He Junyan + + * sys/va/gstvah265dec.c: + va: h265dec: Fix a crash because of missing reference frame. + Some problematic H265 stream may miss the reference frame in the DPB, + and get some message like: "No short term reference picture for xxx". + So there may be empty entries in ref_pic_list0/1 when passing to + decode_slice() function of sub class. We need to check the NULL pointer. + Part-of: + +2022-03-24 15:19:27 +0800 Chun-wei Fan + + * ext/openexr/meson.build: + openexr: Specify modules when finding OpenEXR. + Specify modules to look for OpenEXR when CMake is used, as we may have + CMake config files instead of pkg-config files that result from building + OpenEXR, which may be built with CMake which is typically the case on Visual + Studio builds. + In this case, Meson does seem to find the 'OpenEXR' package with CMake + after trying pkg-config, but does not consider it enough without the + 'modules:' argument. + Part-of: + +2022-03-22 00:30:28 +0900 Sangchul Lee + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Update documentation of 'get-stats' action signal + Some stats fields are updated according to the current implementation. + Part-of: + +2022-03-25 00:27:42 +0100 Mathieu Duponchelle + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/webrtctransceiver.c: + * ext/webrtc/webrtctransceiver.h: + * tests/check/elements/webrtcbin.c: + Revert "webrtcbin: fix msid line and allow customization" + This reverts commit 3cad3455377d5a22faa138d9df840257059776c8. + That commit was breaking the association between an audio and + a video track in the standard case. + In practice, to support carrying separate MediaStream, we are + going a way to map what MediaStreamTrack belong to what MediaStream, + but that will require some thinking about the API. + Part-of: + +2022-03-24 19:55:48 +0200 Vivia Nikolaidou + + * gst/mpegtsdemux/mpegtspacketizer.c: + * gst/mpegtsdemux/mpegtspacketizer.h: + * gst/mpegtsdemux/tsdemux.c: + tsdemux: Don't check SCTE events for being too far from the PCR + Otherwise it happens that SCTE events can only be scheduled up to 15 + seconds since the last seen PCR, which is a useless restriction. + Part-of: + +2022-03-21 23:03:36 +0100 Mathieu Duponchelle + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/webrtctransceiver.c: + * ext/webrtc/webrtctransceiver.h: + * tests/check/elements/webrtcbin.c: + webrtcbin: fix msid line and allow customization + From https://datatracker.ietf.org/doc/html/draft-ietf-mmusic-msid-16: + > Multiple media descriptions with the same value for msid-id and + > msid-appdata are not permitted. + Our previous implementation of simply using the CNAME as the msid + identifier and the name of the transceiver as the msid appdata was + misguided and incorrect, and created issues when bundling multiple + video streams together: the ontrack event was emitted with the same + streams for the two bundled medias, at least in Firefox. + Instead, use the transceiver name as the identifier, and expose + a msid-appdata property on transceivers to allow for further + customization by the application. When the property is not set, + msid-appdata can be left empty as it is specified as optional. + Part-of: + +2022-01-05 10:15:34 -0300 Thibault Saunier + + * ext/wpe/gstwpesrcbin.cpp: + wpe: Mark first audio buffer as discont + Part-of: + +2022-01-04 15:49:35 -0300 Thibault Saunier + + * ext/wpe/gstwpe.h: + * ext/wpe/gstwpesrcbin.cpp: + * ext/wpe/gstwpevideosrc.cpp: + * ext/wpe/meson.build: + * tests/validate/meson.build: + * tests/validate/wpe/load_bytes_first.validatetest: + wpe: Use `about:blank` as default URL to support only using load-bytes + WebKit is not going to render anything until a URI is set, leading to a + WPE posting a `WPE View did not render a buffer` error message. To avoid + requiring the user to know it if they only want to use + `wpesrc::load-bytes` we can just use `about:blank` as default and + everything will work as users would expect. + Part-of: + +2022-01-27 23:54:34 +0900 Seungha Yang + + * docs/plugins/gst_plugins_cache.json: + * gst/debugutils/gstfakeaudiosink.c: + * gst/debugutils/gstfakeaudiosink.h: + * gst/debugutils/gstfakevideosink.c: + * gst/debugutils/gstfakevideosink.h: + fakevideosink,fakeaudiosink: Proxy handoff and preroll-handoff signals + Proxy signals for application to be able to consume them + Part-of: + +2021-12-24 19:49:34 +0900 Seungha Yang + + * docs/plugins/gst_plugins_cache.json: + * ext/aom/gstav1enc.c: + aom: av1enc: Specify Temporal Unit alignment + Encoded bitstream consists of leading Temporal delimiter OBU + with frame, that's Temporal Unit alignment. + Part-of: + +2022-03-24 02:52:45 +0900 Seungha Yang + + * sys/qsv/gstqsvh264enc.cpp: + * sys/qsv/gstqsvh265enc.cpp: + * sys/qsv/gstqsvvp9enc.cpp: + qsvencoder: Clear caps after debug print + Otherwise debug function will print (null) for alread cleared pointer + Part-of: + +2022-03-24 02:43:43 +0900 Seungha Yang + + * sys/qsv/gstqsvh264enc.cpp: + qsvh264enc: Fix profile and level setting in codec data + The profile field in SPS is located after header byte + Part-of: + +2022-03-16 04:58:16 +0900 Seungha Yang + + nvcodec: Add new Direct3D11/CUDA mode encoder implementation + Adding new encoder elements nvd3d11{h264,h265}enc for Direct3D11 + input support and re-written nvcuda{h264,h265}enc elements. + Newly writeen elements have some differences compared with old + nv{h264,h265}enc including non-backward compatible changes. + * RGBA is not a supported input format any more: + New elements will support only YUV formats to avoid implicit conversion + done by hardware. Ideally it should be done by upstream element + in order to have more control on it. Moreover, RGBA support can cause + redundant RGBA -> YUV conversion if multiple encoders are + used for the same RGBA input + * Subsampled planar format support is dropped: + I420 and YV12 format are not supported formats for Direct3D11. + Although it's supported in CUDA mode, it's not a hardware friendly + memory layout and it will waste GPU memory since UV planes + will have large padding due to the memory layout requirement of NVENC. + * GL support is dropped: Similar to the RGBA case, + GL support in encoder would be suboptimal if GL input is + used by multiple encoders, because each encoder will copy GL memory + into CUDA memory. + Upstream cudaupload element can be used for GL <-> CUDA + interop instead. + * No more pre-allocation of encoder input surfaces. New implementation + will use input CUDA memory without copy (zero-copy) or + will copy into a NVENC's input buffer struct in case of + system memory input. + Part-of: + +2022-02-10 10:21:01 +0100 Vivienne Watermeier + + * ext/wpe/WPEThreadedView.cpp: + * ext/wpe/WPEThreadedView.h: + * ext/wpe/gstwpevideosrc.cpp: + wpevideosrc: Add touch event support + Dispatches a list of active touch events to the wpe view on each + received TOUCH_FRAME event. Touch inputs currently only move the cursor, + since wpe doesn't seem to support clicking/scrolling or zooming with + touch input. + Part-of: + +2022-02-14 16:08:23 +0100 Vivienne Watermeier + + * ext/directfb/dfbvideosink.c: + * ext/opencv/gsthanddetect.cpp: + * ext/vulkan/vksink.c: + * gst/librfb/gstrfbsrc.c: + * sys/d3d11/gstd3d11videosink.cpp: + * sys/d3dvideosink/d3dhelpers.c: + * sys/d3dvideosink/d3dvideosink.c: + * sys/directshow/dshowvideosink.cpp: + * sys/va/gstvavpp.c: + * tests/check/pipelines/ipcpipeline.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: + +2022-03-22 10:37:59 +0800 Tong Wu + + * sys/msdk/gstmsdkenc.c: + * sys/msdk/gstmsdkh265enc.c: + * sys/msdk/gstmsdkvp9enc.c: + msdkenc: add macro definitions to avoid the gst-inspect error + Since the strings are empty for GST_MSDK_CAPS_MAKE_WITH_DMABUF_FEATURE + and GST_MSDK_CAPS_MAKE_WITH_VA_FEATURE, when excuting + gst-inspect-1.0.exe msdkh265enc, there will be convert static caps error + because of the extra semicolon between two empty strings. Now macro + definitions are added to avoid this issue. + Part-of: + +2022-01-26 14:55:51 +0800 Mengkejiergeli Ba + + * sys/msdk/gstmsdkdec.c: + msdkdec: Check width and height of mfxVideoParam before allocation + DecodeHeader must be called to fill the mfxVideoParam before allocation, + and thus the check for width and height in mfxVideoParam is necessary. + Part-of: + +2022-03-18 16:34:38 -0400 Nicolas Dufresne + + * docs/plugins/gst_plugins_cache.json: + doc: Update cache after NV12_8L128 addition + Part-of: + +2022-03-21 13:01:03 +0100 Benjamin Gaignard + + * sys/v4l2codecs/gstv4l2decoder.c: + v4l2codecs: Fix memory leak + Free pending_requests array when releasing decoder to avoid memory leak + Part-of: + +2022-02-02 10:05:16 -0300 Daniel Almeida + + * gst-libs/gst/codecs/gstav1decoder.c: + * gst-libs/gst/codecs/gstav1decoder.h: + * gst-libs/gst/codecs/gstvp9decoder.c: + * sys/d3d11/gstd3d11av1dec.cpp: + * sys/va/gstvaav1dec.c: + av1decoder: Sync duplicate_picture with VP9 one + Pass the current frame to the duplicate_picture callback. This makes it easier + to set the frame's output_buffer if we already have one available. Also + documented that unlike VP9, it is not optional to implement this as the + picture will populate the DPB if it is a key-frame. To ensure this, remove the + default implementation. + Part-of: + +2022-03-18 15:59:21 -0400 Nicolas Dufresne + + * gst-libs/gst/codecs/gstvp9decoder.c: + vp9decoder: Copy system_frame_number in duplicate_picture + Just like AV1, copy the system_frame_number from the original picture to make + it clear they reference the same data. + Part-of: + +2022-03-09 16:35:56 -0500 Nicolas Dufresne + + * gst-libs/gst/codecs/gstav1decoder.c: + cdoecs: av1: Copy system_frame_number in duplicate_picture + The system_frame_number is notably used by V4L2 decoder as a unique + indentifier for the frame that was decoded. This value is used to tell driver + which frame to reference, as V4L2 does not have an efficient mechanism to + otherwise pass back the frames. + For this reason, and because it is more ligical, copy the original + system_frame_number into the duplicate picture instead of using the current + frame. + Part-of: + +2022-03-21 22:03:53 +0900 Seungha Yang + + * sys/va/meson.build: + meson: va: Define GST_USE_UNSTABLE_API + Remove extra_c_args which is not defined in this meson file at all, + and define GST_USE_UNSTABLE_API to avoid build warnings + Part-of: + +2022-03-16 13:17:21 -0400 Nicolas Dufresne + + * gst-libs/gst/codecparsers/gstav1parser.c: + * gst-libs/gst/codecparsers/gstav1parser.h: + * gst-libs/gst/codecs/gstav1decoder.c: + codecs: av1: Fix state when we show existing keyframe + Showing existing keyframe have special meaning in AV1. All the references + frame will be refreshed with the original keyframe information. The refresh + process (7.20) is implemented by saving data from the frame_header into the + state. To fix this special case, load all the relevant information into the + frame_header. + As there is nothing happening in between this and the loading of the key-frame + into the state, this patch also remove the separate API function, using it + internally instead. + Fixes #1090 + Part-of: + +2022-03-18 13:04:59 +0100 Jakub Adam + + * sys/d3d11/gstd3d11screencapture.cpp: + d3d11: Fix some typos + Part-of: + +2022-03-18 13:42:27 +0530 Nirbheek Chauhan + + * 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: + +2022-03-18 13:37:30 +0530 Nirbheek Chauhan + + * ext/openexr/gstopenexrdec.cpp: + openexr: Fix some warnings + ``` + ../subprojects/gst-plugins-bad/ext/openexr/gstopenexrdec.cpp:46:24: warning: ‘Imf_3_1::Int64’ is deprecated: use uint64_t [-Wdeprecated-declarations] + 46 | virtual Int64 tellg (); + | ^ + In file included from ../subprojects/gst-plugins-bad/ext/openexr/gstopenexrdec.cpp:32: + /usr/include/OpenEXR/ImfInt64.h:23:32: note: declared here + 23 | typedef IMATH_NAMESPACE::Int64 Int64; + | ^~~~~ + ../subprojects/gst-plugins-bad/ext/openexr/gstopenexrdec.cpp:47:32: warning: ‘Imf_3_1::Int64’ is deprecated: use uint64_t [-Wdeprecated-declarations] + 47 | virtual void seekg (Int64 pos); + | ^ + In file included from ../subprojects/gst-plugins-bad/ext/openexr/gstopenexrdec.cpp:32: + /usr/include/OpenEXR/ImfInt64.h:23:32: note: declared here + 23 | typedef IMATH_NAMESPACE::Int64 Int64; + | ^~~~~ + ../subprojects/gst-plugins-bad/ext/openexr/gstopenexrdec.cpp:67:26: warning: ‘Imf_3_1::Int64’ is deprecated: use uint64_t [-Wdeprecated-declarations] + 67 | Int64 MemIStream::tellg () + | ^ + In file included from ../subprojects/gst-plugins-bad/ext/openexr/gstopenexrdec.cpp:32: + /usr/include/OpenEXR/ImfInt64.h:23:32: note: declared here + 23 | typedef IMATH_NAMESPACE::Int64 Int64; + | ^~~~~ + ../subprojects/gst-plugins-bad/ext/openexr/gstopenexrdec.cpp:73:29: warning: ‘Imf_3_1::Int64’ is deprecated: use uint64_t [-Wdeprecated-declarations] + 73 | MemIStream::seekg (Int64 pos) + | ^ + In file included from ../subprojects/gst-plugins-bad/ext/openexr/gstopenexrdec.cpp:32: + /usr/include/OpenEXR/ImfInt64.h:23:32: note: declared here + 23 | typedef IMATH_NAMESPACE::Int64 Int64; + | ^~~~~ + ``` + Part-of: + +2022-03-18 09:48:46 +0800 He Junyan + + * gst-libs/gst/codecparsers/gstav1parser.h: + codecparsers: av1parser: Fix a typo in FilmGrainParams comment. + Part-of: + +2022-03-10 17:37:26 +0100 Jakub Adam + + * sys/d3d11/gstd3d11screencapture.cpp: + * sys/d3d11/gstd3d11screencapture.h: + * sys/d3d11/gstd3d11screencapturesrc.cpp: + d3d11screencapturesrc: Allow capturing screen sub-area + Adds crop-x, crop-y, crop-width, crop-height properties specifying the + screen area to capture. + Part-of: + +2022-03-15 17:01:59 +0530 Nirbheek Chauhan + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Warn when offer didn't intersect with transceiver caps + We were silently falling back to creating a recvonly offer if the caps + didn't intersect. + Part-of: + +2022-03-17 13:36:25 +1100 Matthew Waters + + * ext/closedcaption/gstccconverter.c: + ccconverter: drop data with a warning if scratch buffers overflow + Instead of asserting which could bring down the entire application. + Part-of: + +2022-03-11 17:02:55 +0000 Philippe Normand + + * ext/wpe/WPEThreadedView.cpp: + wpe: Reintroduce persistent WebContext + A WebContext leak was introduced in MR + https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2252. + If we wanted one WebContext per WebView we should also unref the + WebKitWebContext when destroying the WebView. + This patch reintroduces the persistent WebContext, initially part of + https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1484. + Fixes #1084 + Part-of: + +2022-03-16 00:05:19 +0100 Mathieu Duponchelle + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: fix deadlock when setting up FEC encoder + We bind transceivers' fec_percentage property to the FEC encoder + percentage property, and with the binding bidirectional a deadlock + was introduced by the latest changes from !1762: + We take hold of the transceiver's object lock, then add the binding + and set the property to its initial value on the encoder, which causes + set_property to deadlock in the transceiver when the binding kicks in. + Changing the binding type to DEFAULT (source to target) is enough + to address the deadlock and still serves the original intent. + Part-of: + +2022-03-10 19:22:52 +0900 Sangchul Lee + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Check data channel transport for notifying 'ice-gathering-state' + Previously, it did not care about data channel's. It is fixed by adding + some conditions. + Part-of: + +2022-03-14 01:19:53 +0900 Seungha Yang + + * sys/nvcodec/gstcudamemorycopy.c: + * sys/nvcodec/gstcudautils.c: + * sys/nvcodec/gstcudautils.h: + nvcodec: Move CUDA <-> GL, D3D11, NVMM copy function to utils + This method can be used in other elements as well. + Part-of: + +2022-03-12 01:12:25 +0900 Seungha Yang + + * sys/nvcodec/gstnvh265dec.c: + nvh265sldec: Add support for delayed output + Delay 4 frames in case of non-live to improve throughput + Part-of: + +2022-03-12 21:54:45 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth265decoder.c: + * gst-libs/gst/codecs/gsth265decoder.h: + h265decoder: Add support for delayed output + Functionally identical to the other decoder baseclasses. + Delayed output can improve throughput depending on decoding APIs. + Part-of: + +2022-03-12 00:53:04 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth265decoder.h: + h265decoder: Update documentation + Sync up with other baseclasses + Part-of: + +2022-03-12 04:45:22 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth265decoder.c: + * gst-libs/gst/codecs/gsth265picture.h: + h265decoder: Drain decoder on new_sequence() + Holding previously decoded but not outputted pictures even after + new_sequence is not a safe approach in various aspect. + However, we cannot drain out DPB on new_sequence() unconditionally, + because there is a case where decoder should drop decoded pictures + if NoOutputOfPriorPicsFlag is set. + To detect NoOutputOfPriorPicsFlag before the new_sequence() call, + this patch splits decoding process into two path, one for nal unit parsing + in order to detect NoOutputOfPriorPicsFlag and then each nal unit + will be decoded. + Part-of: + +2022-03-12 03:15:48 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth265decoder.c: + * gst-libs/gst/codecs/gsth265picture.c: + * gst-libs/gst/codecs/gsth265picture.h: + h265decoder: Remove unused pts variable + We can know timestamp from associated GstVideoCodecFrame + Part-of: + +2022-03-13 00:17:48 +0900 Seungha Yang + + * sys/nvcodec/gstnvbaseenc.c: + nvenc: Fix deadlock because of too strict buffer pool size + The pool size might need to be larger than encoding surface pool size. + Also, because we always copy input frame into internal CUDA memory, + there's no reason to restrict max size of buffer pool. + Part-of: + +2022-03-12 10:31:13 +0800 He Junyan + + * sys/va/gstvah264enc.c: + va: Fix a regression because of "Invert video codec frame dependency". + 1. Always set the according GstVaH264EncFrame pointer when GstVideoCodecFrame + pointer is assigned, which can make the logic safe. + 2. Fix the forgotten change in _sort_by_frame_num. Its input pointer now is + GstVideoCodecFrame type. + Part-of: + +2022-03-09 03:45:18 +0900 Seungha Yang + + * gst-libs/gst/codecs/gstav1decoder.c: + * gst-libs/gst/codecs/gstav1picture.c: + * gst-libs/gst/codecs/gstav1picture.h: + * gst-libs/gst/codecs/gsth264decoder.c: + * gst-libs/gst/codecs/gsth264picture.c: + * gst-libs/gst/codecs/gsth264picture.h: + * gst-libs/gst/codecs/gsth265decoder.c: + * gst-libs/gst/codecs/gsth265picture.c: + * gst-libs/gst/codecs/gsth265picture.h: + * gst-libs/gst/codecs/gstmpeg2decoder.c: + * gst-libs/gst/codecs/gstmpeg2picture.c: + * gst-libs/gst/codecs/gstmpeg2picture.h: + * gst-libs/gst/codecs/gstvp8decoder.c: + * gst-libs/gst/codecs/gstvp8picture.h: + * gst-libs/gst/codecs/gstvp9decoder.c: + * gst-libs/gst/codecs/gstvp9picture.c: + * gst-libs/gst/codecs/gstvp9picture.h: + * sys/nvcodec/gstnvh264dec.c: + * sys/va/gstvah264dec.c: + codecs: Rename picture clear functions + Our convention for clear method is gst_clear_foo_bar(). + Part-of: + +2022-03-11 23:20:26 +0900 Seungha Yang + + * sys/nvcodec/gstnvh265dec.c: + nvh265sldec: Always fill SPS/PPS related parameters + Address compare was not a valid approach since it works + only if SPS/PPS id are changed. Otherwise it will always point to + the same address of member variables of h265parser. + Part-of: + +2022-03-11 19:32:59 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264picture.c: + h264decoder: Fix invalid memory access + gst_h264_dpb_needs_bump() can be called with null picture + in case of live + Part-of: + +2022-02-10 08:01:02 +0100 Branko Subasic + + * docs/plugins/gst_plugins_cache.json: + * gst/onvif/gstrtponviftimestamp.c: + * gst/onvif/gstrtponviftimestamp.h: + * tests/check/elements/rtponviftimestamp.c: + rtponviftimestamp: add support for using reference timestamps + Make it posible to configure the element to obtain the timestamps from + reference timestamp meta data instead of using the ntp-offset property, + or estimating its own offset. Currently the only time format supported + is "timestamp/x-unix", i.e. UTC time expressed in the unix time epoch. + In addition the custom event GstNtpOffset has been renamed to + GstOnvifTimestamp, to reflect that it is not necessarily used to convey + the ntp-offset. As a consequence we had to modify a couple of files in + the rtsp-server as well. + Fixes #984 + Part-of: + +2022-03-10 18:40:12 +0000 Tim-Philipp Müller + + * gst/sdp/gstsdpdemux.c: + sdpdemux: add media attributes to caps to fix ptp clock handling + Those are needed by rtpjitterbuffer to do the right thing, e.g. + a=ts-refclk:ptp=IEEE1588-2008:00-**-**-**-**-**-**-**:0 + a=mediaclk:direct=1266592257 + Part-of: + +2022-03-08 16:20:27 +0100 Corentin Damman + + * sys/nvcodec/gstcudaformat.h: + * sys/nvcodec/gstcudamemorycopy.c: + cudamemorycopy: add D3D11 resource support + Part-of: + +2022-03-09 09:35:16 +0100 Corentin Damman + + * sys/nvcodec/gstcudacontext.c: + * sys/nvcodec/meson.build: + cudacontext: find associated DXGI Adapter LUID + Part-of: + +2022-02-28 14:40:51 +0100 Corentin Damman + + * sys/nvcodec/gstcudautils.c: + * sys/nvcodec/gstcudautils.h: + * sys/nvcodec/meson.build: + * sys/nvcodec/stub/cuda.h: + cudautils: add support of D3D11 resource as Cuda graphics resource type + Part-of: + +2022-02-28 11:24:31 +0100 Corentin Damman + + * sys/nvcodec/gstcudaloader.c: + * sys/nvcodec/gstcudaloader.h: + * sys/nvcodec/stub/cuda.h: + cudaloader: add D3D11 API + Part-of: + +2022-03-10 10:33:56 +0100 Edward Hervey + + * gst/mpegtsdemux/mpegtsbase.c: + * gst/mpegtsdemux/mpegtsbase.h: + mpegts: Handle glib < 2.58 + By using a workaround to the lack of g_ptr_array_steal_index. + Fixes #1078 + Part-of: + +2022-03-10 15:36:00 +1100 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: fix ulpfecenc passthrough pt + ulpfecenc uses a value of pt=255 for passthrough. + Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1075 + Part-of: + +2022-03-10 02:28:11 +0900 Seungha Yang + + * sys/nvcodec/gstnvdec.c: + * sys/nvcodec/gstnvdec.h: + nvh264dec,nvh265dec: Fix broken key-unit trick and reverse playback + On GstVideoDecoder::{drain,flush}, we send null packet with + CUVID_PKT_ENDOFSTREAM flag to drain out decoder. Which will + reset CUVID parser as well. + To continue decoding after the drain, the next input buffer + should include sequence headers otherwise CUVID parser will + not report any decodeable frame. + Part-of: + +2021-11-02 09:20:55 +0100 Edward Hervey + + * gst/mpegtsdemux/mpegtsbase.c: + tsbase: Handle more program updates + There could be a case where the new program has the same program number as the + previous one ... but is actually located on a PID previously used for elementary + stream. In that case the program is guaranteed to not be an update of the + previous program but a completely new one. + Part-of: + +2021-11-02 09:18:57 +0100 Edward Hervey + + * gst/mpegtsdemux/mpegtsbase.c: + * gst/mpegtsdemux/mpegtsbase.h: + mpegtsbase: Use an array to track programs + We need to be able to look for programs by their PID also. Using a hash table + was a bit sub-par (and overkill) for storing a range of programs. + This is needed because there could potentially be two programs with the same + program id but different PMT PID (while one is being deactivated the new one + would "exist"). + Part-of: + +2022-03-04 13:19:17 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvah264enc.c: + vah264enc: Invert video codec frame dependency. + Instead of using GstMiniObject to hold H264 frame, now it uses a plain + structure. Besides, instead of holding a reference to + GstVideoCodecFrame, the H264 frame structure is set as a + GstVideoCodecFrame user data. + Part-of: + +2022-03-09 02:14:50 +0900 Seungha Yang + + * sys/nvcodec/gstcudamemorycopy.c: + cudamemorycopy: Fix GL resource leak + Clear GL resources on stop() + Part-of: + +2022-03-07 18:46:55 +0100 Jan Alexander Steffens (heftig) + + * gst/mpegtsmux/gstbasetsmux.c: + mpegtsmux: Start last_ts with GST_CLOCK_TIME_NONE + And use the output segment position for the outgoing timestamp while it + is. This is needed to delay the calculation of `output_ts_offset` until + we actually have a usable timestamp, as tsmux will output a few initial + packets while `last_ts` is still unset. + Without this, the calculation would use the initial `0` value, which did + not have the intended effect of making VBR mode behave like CBR mode, + but always calculated an offset equal to the selected start time. + Part-of: + +2022-03-07 18:46:08 +0100 Jan Alexander Steffens (heftig) + + * gst/mpegtsmux/gstbasetsmux.c: + mpegtsmux: Use GST_CLOCK_STIME_NONE for output_ts_offset + It's a GstClockTimeDiff, thus GST_CLOCK_TIME_NONE isn't appropriate. + Part-of: + +2022-03-08 01:26:50 +0900 Seungha Yang + + * sys/decklink/linux/DeckLinkAPI.h: + * sys/decklink/linux/DeckLinkAPIConfiguration.h: + * sys/decklink/linux/DeckLinkAPIDeckControl.h: + * sys/decklink/linux/DeckLinkAPIDiscovery.h: + * sys/decklink/linux/DeckLinkAPIDispatch.cpp: + * sys/decklink/linux/DeckLinkAPIModes.h: + * sys/decklink/linux/DeckLinkAPITypes.h: + * sys/decklink/linux/DeckLinkAPIVersion.h: + * sys/decklink/linux/LinuxCOM.h: + * sys/decklink/osx/DeckLinkAPI.h: + * sys/decklink/osx/DeckLinkAPIConfiguration.h: + * sys/decklink/osx/DeckLinkAPIDeckControl.h: + * sys/decklink/osx/DeckLinkAPIDiscovery.h: + * sys/decklink/osx/DeckLinkAPIDispatch.cpp: + * sys/decklink/osx/DeckLinkAPIModes.h: + * sys/decklink/osx/DeckLinkAPIStreaming.h: + * sys/decklink/osx/DeckLinkAPITypes.h: + * sys/decklink/osx/DeckLinkAPIVersion.h: + * sys/decklink/win/DeckLinkAPI.h: + * sys/decklink/win/DeckLinkAPI_i.c: + decklink: Update SDK version to 12.2.2 + Part-of: + +2022-03-08 03:45:01 +0900 Seungha Yang + + * sys/nvcodec/gstcudamemorycopy.c: + cudamemorycopy: Remove texture-target caps field + It's GL specific field, and we can remove it unconditionally + Part-of: + +2022-03-05 02:30:24 +0900 Seungha Yang + + * sys/nvcodec/gstcudaformat.h: + * sys/nvcodec/gstcudamemorycopy.c: + * sys/nvcodec/gstcudanvmm.c: + * sys/nvcodec/gstcudanvmm.h: + * sys/nvcodec/meson.build: + * sys/nvcodec/plugin.c: + cudaupload,cudadownload: Add support for dGPU NVMM + Implement NVMM <-> CUDA, GL, SYSTEM memory conversion. Jetson is + not supported yet. Note that NVMM <-> GL interop on Jetson platform + is supported by GstGL + Some example pipelines are: + - Convert NVMM to GstGL memory + nvv4l2decoder ! "video/x-raw(memory:NVMM)" ! cudadownload ! "video/x-raw(memory:GLMemory)" ! glimagesink + - Upload system memory to NVMM and encode + video/x-raw,format=NV12 ! cudaupload ! "video/x-raw(memory:NVMM)" ! nvv4l2h264enc + - Convert NVMM to GstCUDA memory and encode + nvvideoconvert ! "video/x-raw(memory:NVMM)" ! cudaupload ! "video/x-raw(memory:CUDAMemory)" ! nvh264enc + Part-of: + +2022-03-03 15:06:00 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvaencoder.c: + * sys/va/gstvaencoder.h: + * sys/va/gstvah264enc.c: + va: encoder: Don't preallocate reconstruct buffers. + It's not required by VA to register the reconstruct buffers at context + creation, just as in decoders. + Part-of: + +2022-03-07 10:19:53 +0000 Philippe Normand + + * tests/check/libs/play.c: + gstplay: tests: Keep track of errors/warnings + Part-of: + +2022-03-07 10:16:36 +0000 Philippe Normand + + * gst-libs/gst/play/gstplay.c: + gstplay: Do not error out on message parsing failures + Specially when parsing errors and warnings, the details field can be NULL and + the gst_structure_get() call would return FALSE in such cases, triggering false + positive errors. + Follow-up for #1063 + Part-of: + +2022-03-07 10:14:43 +0000 Philippe Normand + + * gst-libs/gst/play/gstplay.c: + * gst-libs/gst/play/gstplay.h: + gstplay: Fix warning parsing API + The GError is an out parameter, so should be a ** parameter, like the details + parameter. + See also #1063 + Part-of: + +2022-03-07 18:59:37 +0900 Seungha Yang + + * sys/nvcodec/gstcudamemorycopy.c: + cudamemorycopy: Fix build when gl is disabled + Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1707 + Part-of: + +2022-03-02 09:15:12 +0800 Mengkejiergeli Ba + + * sys/msdk/gstmsdkdec.c: + msdkdec: Fix to not trigger SFC scaling when vpp at downstream + When there is vpp scaling downstream, we need to make sure SFC is not + triggered because vpp may fall into passthrough mode which causes + the decoder negotiation to create src caps with vpp scaled width/height. + This patch includes bitstream's original size in first query with + downstream in gst_msdkdec_src_caps, which is the same for what we do for + color format in this query. This is to ensure SFC scaling starts to + work only when downstream directly asks for a different size instead of + through vpp. + Note that here SFC scaling follows the same behavior as msdkvpp: + if user only changes width or height, e.g. dec ! video/x-raw,width=xx !, + the height will be modified to the value which fits the original DAR. + Part-of: + +2022-03-06 19:18:20 +0900 Seungha Yang + + * sys/nvcodec/gstcudautils.c: + nvcodec: Add missing null check in context sharing code + Part-of: + +2022-03-04 03:33:41 +0900 Seungha Yang + + * sys/nvcodec/gstcudadownload.c: + * sys/nvcodec/gstcudadownload.h: + * sys/nvcodec/gstcudaformat.h: + * sys/nvcodec/gstcudamemorycopy.c: + * sys/nvcodec/gstcudamemorycopy.h: + * sys/nvcodec/gstcudaupload.c: + * sys/nvcodec/gstcudaupload.h: + * sys/nvcodec/meson.build: + * sys/nvcodec/plugin.c: + nvcodec: Refactor cudaupload/download and add support for GL memory + * Implement new baseclass GstCudaMemoryCopy to remove duplicated + cudaupload/download code + * Add support for CUDA <-> GL memory conversion via cudaupload/download + Part-of: + +2022-03-03 03:25:47 +0900 Seungha Yang + + * sys/nvcodec/cuda-converter.c: + * sys/nvcodec/cuda-converter.h: + * sys/nvcodec/gstcudabasefilter.c: + * sys/nvcodec/gstcudabufferpool.c: + * sys/nvcodec/gstcudadownload.c: + * sys/nvcodec/gstcudamemory.c: + * sys/nvcodec/gstcudamemory.h: + * sys/nvcodec/gstcudaupload.c: + * sys/nvcodec/gstnvbaseenc.c: + * sys/nvcodec/gstnvdec.c: + * sys/nvcodec/gstnvdecoder.c: + * sys/nvcodec/plugin.c: + nvcodec: Refactor GstCudaMemory abstraction + * Hide GstCudaMemory member variables + * Make GstCudaAllocator object GstCudaContext independent + * Set offset/stride of memory correctly via video meta + * Drop GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT support. + This implementation actually does not support custom alignment + because we allocate device memory via cuMemAllocPitch + of which alignment is almost uncontrollable + Part-of: + +2022-03-02 22:03:54 +0900 Seungha Yang + + * sys/nvcodec/cuda-converter.h: + * sys/nvcodec/gstcudabasefilter.c: + * sys/nvcodec/gstcudabasefilter.h: + * sys/nvcodec/gstcudabasetransform.c: + * sys/nvcodec/gstcudabasetransform.h: + * sys/nvcodec/gstcudaconvert.c: + * sys/nvcodec/gstcudadownload.c: + * sys/nvcodec/gstcudadownload.h: + * sys/nvcodec/gstcudaformat.h: + * sys/nvcodec/gstcudaupload.c: + * sys/nvcodec/gstcudaupload.h: + nvcodec: Refactor basetransform subclasses + * cudaupload/download + - Specify only formats actually we can deal with + nvcodec elements, not all video formats + - Supports CUDA output for download and input for upload in order + to make passthrough possible, like other upload/download elements. + * cudabasetransform + - Reset conversion element if upstream CUDA memory + holds different CUDA context and the element can accept it. + This is the same behavior as corresponding d3d11 filter elements. + Part-of: + +2022-03-02 20:55:29 +0900 Seungha Yang + + * sys/nvcodec/gstcudabufferpool.c: + * sys/nvcodec/gstcudabufferpool.h: + cudabufferpool: Move GstCudaContext object to public member + ... so that plugins can understand assosicated cuda context with the + pool. + Part-of: + +2022-03-03 02:48:17 +0900 Seungha Yang + + * sys/nvcodec/gstcudacontext.c: + * sys/nvcodec/gstcudacontext.h: + * sys/nvcodec/gstcudautils.c: + cudacontext: Require explicit gpu id instead of auto (-1) + Sync up with GstD3D11Device implementation. The auto stuff should + be handled in context sharing step, not device creation. + Part-of: + +2022-03-03 03:24:14 +0900 Seungha Yang + + * sys/nvcodec/gstcudaloader.c: + * sys/nvcodec/gstcudamemory.c: + * sys/nvcodec/gstcudascale.c: + * sys/nvcodec/gstcuvidloader.c: + * sys/nvcodec/gstnvrtcloader.c: + nvcodec: Indent update + ... to prevent gnu indent version dependent diffs. + Part-of: + +2022-03-02 05:01:42 +0900 Seungha Yang + + * sys/nvcodec/gstcudacontext.c: + cudacontext: Remove unnecessary cuInit() call + It's already called at plugin init time + Part-of: + +2022-03-05 11:35:29 +0800 He Junyan + + * gst/videoparsers/gstav1parse.c: + av1parse: Add a comment when the detection of TU fails. + Also update the print message. + Part-of: + +2022-03-04 16:48:54 -0500 Nicolas Dufresne + + * gst/camerabin2/gstwrappercamerabinsrc.c: + camerabin: Remove drain query + This was to support very old V4L2 kernel. As we moved to DMABuf and can now + detach buffers on renegotiation, the buffer it tries to fix no longer exist. + The risk to blocking indefinitly the application does still exist though. + Fixes #1070 + Part-of: + +2022-03-03 23:00:41 +0800 He Junyan + + * gst/videoparsers/gstav1parse.c: + av1parse: check the error return when parse_alignment_from_caps() + Part-of: + +2022-03-03 22:38:56 +0800 He Junyan + + * gst/videoparsers/gstav1parse.c: + av1parse: Use the intersected caps to decide the alignment. + When we negotiate with downstream, We should use the intersected + caps of input and output to decide the alignment and stream format. + The current code just uses the input caps which may lack the stream + format. + Part-of: + +2022-03-03 21:30:00 +0800 He Junyan + + * gst/ivfparse/gstivfparse.c: + ivfparse: Set the alignment to tu for AV1 stream. + Just do the same as other demux. + Part-of: + +2022-03-03 17:51:11 +0800 He Junyan + + * gst/videoparsers/gstav1parse.c: + av1parse: Only detect the stream format when input alignment is tu. + The demux now outputs the AV1 stream in "tu" alignment, so we do not need + to detect the input alignment. But the annex b stream format is not recognized + by the demux, we still need to detect that stream format for the first input. + Part-of: + +2022-03-02 16:22:25 -0500 Nicolas Dufresne + + * gst/videoparsers/gstav1parse.c: + av1parse: Save the default alignment + Otherwise the transformation is not applied and decoders may not + get the appropriate format despite the caps being negotiated + correctly. + Part-of: + +2022-03-02 16:20:31 -0500 Nicolas Dufresne + + * gst/videoparsers/gstav1parse.c: + av1parse: Remove duplicated check + The case of both strings being empty is already checked in the + helper function. No functional changes. + Part-of: + +2022-03-04 10:02:56 -0500 Nicolas Dufresne + + * gst/videoparsers/gstvp9parse.c: + vp9parse: Fix auto-plugging of HW frame decoder + Decoders that required frame aligmment and didn't have an associated + alpha decoder were skipped. This is because the parser was constructing + caps based on the software alpha decoder, which specify super-frame + alignment. + Iterate over the caps to filter the one that have a matching codec-alpha, with + the semantic the no codec-alpha field means codec-alpha=false. Then if + everything was removed, callback to the original, so that the first non-alpha + decoder will be picked. + Fixes #820 + Part-of: + +2022-03-04 14:17:47 +0100 Edward Hervey + + * gst/mpegtsdemux/tsdemux.c: + tsdemux: Handle PES headers bigger than a mpeg-ts packet + While the actual PES header parser could notify us that it needed more data, we + would never actually act on it. + This commit will accumulate incoming packets in such situation and re-attempt + the header parsing. + Fixes #1027 + Part-of: + +2022-03-03 11:32:23 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvabasetransform.c: + va: basetransform: Add device-path read-only property. + Part-of: + +2022-03-03 11:05:36 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvabasedec.c: + * sys/va/gstvabasedec.h: + va: basedec: Add device-path read-only property. + And elements will notify the used device-path if display is DRM. + Part-of: + +2022-03-04 13:34:50 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvah264enc.c: + vah264enc: Remove GST_PARAM_CONDITIONALLY_AVAILABLE. + Since it's used only when the property is conditionally installed, and + these parameters are always installed. + Part-of: + +2022-03-04 09:15:42 +0100 He Junyan + + * sys/va/gstvaencoder.c: + va: encoder: Clean dead code. + Part-of: + +2022-03-03 14:08:16 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvaencoder.c: + va: encoder: Fix error code path when open. + Part-of: + +2022-03-03 13:57:35 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvah264enc.c: + vah264enc: Remove preferred_output_delay. + In the current state of the encoder it's just dead code. + Part-of: + +2022-03-03 09:59:28 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvaencoder.c: + * sys/va/gstvaencoder.h: + * sys/va/gstvah264enc.c: + vah264enc: Avoid mapping coded buffer twice. + Currently for copying the coded buffer onto a GStreamer buffer, the + coded buffer is mapped two times: one for getting the size, and later + for do the actual copy. We can avoid this by doing directly in the + element rather than in the general encoder object. + Part-of: + +2022-03-02 20:53:16 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvaencoder.c: + * sys/va/gstvaencoder.h: + * sys/va/gstvah264enc.c: + vah264enc: Single parameter array per picture. + There's no need, at least in H.264, to hold a global parameter array, + since there's no need to submit SPS, trellis, hdr or quality in every + buffer, but only on IDR ones. + Part-of: + +2022-03-02 20:06:01 +0100 Víctor Manuel Jáquez Leal + + * sys/va/plugin.c: + va: Fix log message + Part-of: + +2022-03-04 09:57:02 +0000 Philippe Normand + + * gst-libs/gst/play/gstplay.c: + * gst-libs/gst/play/gstplay.h: + play: Fix error parsing API + The GError is an out parameter, so should be a ** parameter, like the details + parameter. + Fixes #1063 + Part-of: + +2021-08-03 12:14:49 +1000 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + * ext/webrtc/transportstream.c: + * ext/webrtc/transportstream.h: + * ext/webrtc/webrtctransceiver.c: + * ext/webrtc/webrtctransceiver.h: + * tests/check/elements/webrtcbin.c: + webrtc: support renegotiating adding/removing RTX + We need to always add the RTX/RED/ULPFEC elements as rtpbin will only + call us once to request aux/fec senders/receivers. + We also need to regenerate the media section of the SDP instead of + blindly copying from the previous offer. + Part-of: + +2022-03-01 11:43:09 +0800 Mengkejiergeli Ba + + * sys/msdk/gstmsdkenc.c: + msdkenc: Change default ref frames number as 0 + When user does not set ref-frames in pipeline, we should let MediaSDK + decide the reference frame number via setting default value as 0 at + gstreamer side. + Part-of: + +2022-03-04 04:18:06 +0900 Seungha Yang + + * sys/wic/meson.build: + meson: wic: Fix typo + Should check WIC build option, not MediaFoundation + Part-of: + +2022-03-03 04:22:15 +0900 Seungha Yang + + * sys/qsv/gstqsvdecoder.h: + * sys/qsv/gstqsvencoder.h: + * sys/qsv/gstqsvh264dec.cpp: + * sys/qsv/gstqsvh264enc.cpp: + * sys/qsv/gstqsvh265enc.cpp: + * sys/qsv/gstqsvvp9enc.cpp: + qsv: Remove strcpy for DRM device path + Simplify code. It's just one-time allocation, so don't need to worry + about leaking. + Part-of: + +2022-03-03 04:57:42 +0900 Seungha Yang + + * sys/msdk/gstmsdkcontext.c: + msdk: Don't print error log for missing DRM device path + It's expected in case that such DRM device is unavailable for some reasons, + specifically non-Intel platform or so + Part-of: + +2022-01-30 03:11:37 +0900 Seungha Yang + + * meson_options.txt: + * sys/meson.build: + * sys/wic/gstwicdecoder.cpp: + * sys/wic/gstwicdecoder.h: + * sys/wic/gstwicimagingfactory.cpp: + * sys/wic/gstwicimagingfactory.h: + * sys/wic/gstwicjpegdec.cpp: + * sys/wic/gstwicjpegdec.h: + * sys/wic/gstwicpngdec.cpp: + * sys/wic/gstwicpngdec.h: + * sys/wic/gstwicutils.cpp: + * sys/wic/gstwicutils.h: + * sys/wic/meson.build: + * sys/wic/plugin.cpp: + wic: Add support for JPEG and PNG decoding + Adding Windows Imaging Component (WIC) plugin with JPEG/PNG decoding + support. + Part-of: + +2022-03-02 06:17:22 +0900 Seungha Yang + + * sys/directshow/gstdshow.cpp: + * sys/directshow/gstdshowvideodec.cpp: + directshow: Fix for division by zero + The AvgTimePerFrame value may be unknown. Use arbitrary + value (30 fps) instead of crashing. + Part-of: + +2022-02-20 03:59:32 +0900 Seungha Yang + + * sys/qsv/gstqsvallocator.cpp: + * sys/qsv/gstqsvallocator.h: + * sys/qsv/gstqsvallocator_d3d11.cpp: + * sys/qsv/gstqsvallocator_va.cpp: + * sys/qsv/gstqsvdecoder.cpp: + * sys/qsv/gstqsvdecoder.h: + * sys/qsv/gstqsvencoder.cpp: + * sys/qsv/gstqsvh264dec.cpp: + * sys/qsv/gstqsvh264dec.h: + * sys/qsv/gstqsvutils.h: + * sys/qsv/meson.build: + * sys/qsv/plugin.cpp: + qsv: Add H.264 decoder + Initial decoder implementation with baseclass + Part-of: + +2022-02-21 10:49:15 +0100 Sebastian Fricke + + * ext/wpe/WPEThreadedView.cpp: + * ext/wpe/gstwpe.cpp: + * ext/wpe/gstwpe.h: + 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: + +2022-02-23 11:10:11 +0100 Sebastian Fricke + + * 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: + +2022-02-21 12:26:49 +0100 Víctor Manuel Jáquez Leal + + * docs/plugins/gst_plugins_cache.json: + docs: Add vah264enc metadata. + Part-of: + +2021-10-05 01:53:19 +0800 He Junyan + + * sys/va/plugin.c: + va: enable the H264 encoder. + Part-of: + +2021-10-05 01:51:48 +0800 He Junyan + + * sys/va/gstvah264enc.c: + * sys/va/gstvah264enc.h: + * sys/va/meson.build: + va: Add H264 encoder. + This a new VA-API implementation of a H264 encoder. + It can control the GOP and parameter settings, while the MV searching, + VCL and the rate control algorithm are implemented by VA drivers and HW. + It supports most of the common usage options in H264, but still lacks + of look ahead, field, B frame weighted prediction, etc. + Co-authored-by: Victor Jaquez + Part-of: + +2021-10-05 01:50:07 +0800 He Junyan + + * sys/va/gstvaencoder.c: + * sys/va/gstvaencoder.h: + * sys/va/meson.build: + va: Add a common encoder object. + As the counterpart of the va decoder, this class handles all the + common logic for the encoding routine and miscellaneous queries about + encoding. + Co-authored-by: Victor Jaquez + Part-of: + +2022-01-20 21:44:20 +0800 He Junyan + + * sys/va/vacompat.h: + va: Add vacompat.h to wrap glib functions. + The g_queue_clear_full() and g_array_copy() functions in the glib + may not be available for the current glib version check, so we add + helper functions to wrap it. + This should be deleted after the glib version bumps. + Part-of: + +2021-10-21 22:56:23 +0800 He Junyan + + * sys/va/gstvaprofile.c: + * sys/va/gstvaprofile.h: + va: Add the profile string name into the profile_map. + We also add a helper function of gst_va_profile_from_name to get + the VA profile value by its profile string name. + Part-of: + +2021-10-05 01:53:47 +0800 He Junyan + + * sys/va/gstvaprofile.c: + va: Change the H264 profile string order in the profile_map. + The first one should be the one that matches the VA profile's name + most precisely. + Part-of: + +2021-10-05 01:45:25 +0800 He Junyan + + * sys/va/gstvacaps.c: + * sys/va/gstvacaps.h: + va: caps: Expose gst_va_create_coded_caps as helper function. + And allow free indentation for array declaration. + Part-of: + +2021-10-05 01:43:28 +0800 He Junyan + + * tests/check/libs/h264bitwriter.c: + * tests/check/meson.build: + test: Add test cases for the H264 bitwriter. + Part-of: + +2021-10-05 01:42:41 +0800 He Junyan + + * gst-libs/gst/codecparsers/gsth264bitwriter.c: + * gst-libs/gst/codecparsers/gsth264bitwriter.h: + * gst-libs/gst/codecparsers/meson.build: + codecparsers: bitwriter: Add the common bit writer functions for H264. + Part-of: + +2021-10-05 01:41:07 +0800 He Junyan + + * gst-libs/gst/codecparsers/nalutils.c: + * gst-libs/gst/codecparsers/nalutils.h: + codecparsers: nalutils: Add nal_writer_reset_and_get_data help function. + We not only want to create a NAL gstmemory, but also need to create and + get the raw data of a NAL writer for the later usage. + Part-of: + +2022-02-28 16:33:23 +0100 Guillaume Desmottes + + * ext/gs/meson.build: + gs: look for google_cloud_cpp_storage.pc + storage_client.pc was legacy and has been removed: + https://github.com/googleapis/google-cloud-cpp/commit/df6fa3611cdfbc37d40e1451afa91fd7d2e7d5f7#diff-bc35ad7c2fe631fd5578a06092412dba81c7ddd27bb25df7e17bb13771799afcL743 + No need to keep looking for storage_client.pc as a fallback as 1.25.0, + our minimum version, already ships google_cloud_cpp_storage.pc + Part-of: + +2022-02-25 15:00:05 +0800 jinsl00000 + + * sys/ipcpipeline/gstipcpipelinecomm.c: + * sys/ipcpipeline/meson.build: + ipcpipeline: fix crash and error on windows with SOCKET or _pipe() + The fd was in different meanings on windows: + POSIX read and write use the fd as a file descriptor. + The gst_poll use the fd as a WSASocket. + This patch use WSASocket as default on windows. This is a temporary measure, because IPC has many different implement. There may be a better way in the future. + See #1044 + Part-of: + +2022-02-14 16:15:46 +0800 Wu Tong + + * sys/msdk/gstmsdkcontextutil.c: + * sys/msdk/gstmsdkenc.c: + MSDK: Add _context_query() and avoid compile error on Windows + To avoid compile error on Windows, macro definitions are added to suppress va + variables. In the meantime, add function _context_query() to query + context on Windows. + Part-of: + +2022-02-24 20:26:46 +0530 Sanchayan Maity + + * ext/ldac/gstldacenc.c: + ldac: Set eqmid in caps + We set the eqmid in caps to be usable downstream by rtpldacpay for + knowing the frame count. + Part-of: + +2022-01-31 16:13:32 +0200 Vivia Nikolaidou + + * gst/mpegtsmux/gstbasetsmux.c: + tsmux: Skip empty buffers + They can be created e.g. by aggregator when there is a gap. Such buffers + should not be muxed at all. + Part-of: + +2022-02-21 11:37:26 -0500 Xavier Claessens + + * data/meson.build: + * ext/voamrwbenc/meson.build: + * gst/freeverb/meson.build: + devenv: Add some missing GStreamer specific env variables + This should make "meson devenv" closer to what "gst-env.py" sets. + - GST_VALIDATE_SCENARIOS_PATH + - GST_VALIDATE_APPS_DIR + - GST_OMX_CONFIG_DIR + - GST_ENCODING_TARGET_PATH + - GST_PRESET_PATH + - GST_PLUGIN_SCANNER + - GST_PTP_HELPER + - _GI_OVERRIDES_PATH + Part-of: + +2018-12-05 01:22:48 +0100 Jan Alexander Steffens (heftig) + + * ext/fdkaac/gstfdkaacdec.c: + * ext/fdkaac/gstfdkaacdec.h: + fdkaacdec: Support arbitrary channel configs + Try to match the config to GStreamer positions. If something doesn't + fit, fall back to a set of unpositioned channels. + Part-of: + +2018-12-05 01:07:19 +0100 Jan Alexander Steffens (heftig) + + * ext/fdkaac/gstfdkaacdec.c: + * ext/fdkaac/gstfdkaacdec.h: + fdkaacdec: Use predefined channel layouts + This limits the decoder to the layouts predefined for the encoder + (including the MPEG standard layouts) but greatly simplifies the + implementation. + Part-of: + +2022-02-01 14:51:27 +0200 Vivia Nikolaidou + + * gst/mpegtsmux/gstbasetsmux.c: + * gst/mpegtsmux/gstbasetsmux.h: + tsmux: Lock mux->tsmux, the programs hash table, and pad streams + They contain implementations that are not thread-safe (e.g. GList, GHashTable). + Part-of: + +2022-02-17 15:16:40 +0800 Mengkejiergeli Ba + + * sys/msdk/gstmsdkdec.c: + msdkdec: Fix uninitialized variables + Part-of: + +2022-02-17 15:12:52 +0800 Mengkejiergeli Ba + + * sys/msdk/gstmsdkdec.c: + * sys/msdk/gstmsdkvpp.c: + msdk: Fix unchecked return values + There are several calls of gst_video_info_from_caps and gst_video_frame_copy + without checks for the returned values. This patch adds all necessary + function return checks. + Part-of: + +2022-02-22 05:19:51 +0900 Seungha Yang + + * sys/qsv/gstqsvencoder.cpp: + qsvencoder: Fix caps leak in Linux build + Part-of: + +2022-02-22 05:15:04 +0900 Seungha Yang + + * sys/qsv/plugin.cpp: + qsv: Fix debug category name of qsvallocator + Remove gst prefix to make $env:GST_DEBUG="qsv*:6" work for qsvallocator + as well + Part-of: + +2022-02-21 16:45:50 +0800 Mengkejiergeli Ba + + * docs/plugins/gst_plugins_cache.json: + bad:docs: Add vaav1dec in documentation + Part-of: + +2022-02-21 14:17:11 +0200 Sebastian Dröge + + * gst-libs/gst/d3d11/gstd3d11memory.cpp: + * gst-libs/gst/d3d11/gstd3d11memory.h: + d3d11: Remove non-existing gst_d3d11_memory_get_type() API from header + Part-of: + +2022-02-14 23:30:45 +0300 Dmitry Osipenko + + * sys/v4l2codecs/gstv4l2format.c: + * sys/v4l2codecs/gstv4l2format.h: + v4l2codecs: Support YUV420M format + YUV420M format of V4L essentially is I420 with separate memory planes. + It's used by NVIDIA Tegra V4L decoder. Support this format by v4l2codecs. + Part-of: + +2022-02-20 23:59:46 +0900 Seungha Yang + + * sys/d3d11/gstd3d11screencapturesrc.cpp: + d3d11screencapturesrc: Use staging buffer pool for performance + By using staging pool/buffer, we can avoid per frame + staging texture -> system memory copy. + Part-of: + +2022-02-20 15:20:07 -0500 Nicolas Dufresne + + * docs/plugins/gst_plugins_cache.json: + doc: Add NV12_16L32S into the cache + Autogenerated by CI + Part-of: + +2022-01-26 13:39:40 -0500 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2format.c: + * sys/v4l2codecs/gstv4l2format.h: + v4l2codecs: Enable MediaTek MM21 (NV12_16L32S) + Part-of: + +2022-01-19 15:53:05 -0500 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2format.c: + v4l2codecs: Add support for multi planar buffers + V4L2 have some pixel formats that produces 2 dmabuf, this add + support for these format. + Part-of: + +2022-01-25 14:08:47 -0500 Nicolas Dufresne + + * ext/wayland/wlshmallocator.c: + * sys/kms/gstkmsallocator.c: + * sys/v4l2codecs/gstv4l2format.c: + Port plugins to gst_video_format_info_extrapolate_stride() + This reduces code duplication and simplify addition of new + pixel formats into related plugins. + Part-of: + +2022-02-20 06:36:45 +0900 Seungha Yang + + * sys/winscreencap/dxgicapture.c: + * sys/winscreencap/dxgicapture.h: + * sys/winscreencap/gstdxgiscreencapsrc.c: + * sys/winscreencap/gstdxgiscreencapsrc.h: + * sys/winscreencap/gstwinscreencap.c: + * sys/winscreencap/meson.build: + winscreencap: Remove dxgiscreencapsrc element + We have the d3d11screencapturesrc element in d3d11 plugin + which is obviously better than this element in terms of performance + and design, so we don't need to make people be confused by two separate elements. + Let's pick the better implementation and remove unnecessary one. + Part-of: + +2022-02-08 15:23:17 +0100 Jan Alexander Steffens (heftig) + + * ext/wpe/meson.build: + wpe: Clean up build script + Use feature.require to check for gstgl and exit early if 'wpe' is + disabled (don't even check for wpe-webkit-1.1). + Part-of: + +2022-02-19 00:37:34 +0900 Seungha Yang + + * sys/directshow/dshowvideosink.cpp: + * sys/directshow/gstdshowaudiodec.h: + directshow: Fix build warnings + Part-of: + +2022-02-19 00:14:38 +0900 Seungha Yang + + * sys/directshow/dshowdecwrapper/gstdshowdecwrapper.cpp: + * sys/directshow/dshowdecwrapper/gstdshowdecwrapper.h: + * sys/directshow/dshowdecwrapper/meson.build: + * sys/directshow/dshowdeviceprovider.cpp: + * sys/directshow/dshowdeviceprovider.h: + * sys/directshow/dshowsinkwrapper/meson.build: + * sys/directshow/dshowsrcwrapper/meson.build: + * sys/directshow/dshowvideofakesrc.cpp: + * sys/directshow/dshowvideofakesrc.h: + * sys/directshow/dshowvideosink.cpp: + * sys/directshow/dshowvideosink.h: + * sys/directshow/gstdshow.cpp: + * sys/directshow/gstdshow.h: + * sys/directshow/gstdshowaudiodec.cpp: + * sys/directshow/gstdshowaudiodec.h: + * sys/directshow/gstdshowaudiosrc.cpp: + * sys/directshow/gstdshowaudiosrc.h: + * sys/directshow/gstdshowfakesink.cpp: + * sys/directshow/gstdshowfakesink.h: + * sys/directshow/gstdshowfakesrc.cpp: + * sys/directshow/gstdshowfakesrc.h: + * sys/directshow/gstdshowutil.cpp: + * sys/directshow/gstdshowutil.h: + * sys/directshow/gstdshowvideodec.cpp: + * sys/directshow/gstdshowvideodec.h: + * sys/directshow/gstdshowvideosrc.cpp: + * sys/directshow/gstdshowvideosrc.h: + * sys/directshow/meson.build: + * sys/directshow/plugin.cpp: + directshow: Merge plugins into single directshow plugin + ... and lower rank of dshowvideosink and dshowdeviceprovider + to GST_RANK_MARGINAL since we don't prefer this plugin + by default + Part-of: + +2022-02-19 00:12:55 +0900 Seungha Yang + + * sys/directshow/dshowdecwrapper/gstdshowaudiodec.cpp: + * sys/directshow/dshowdecwrapper/gstdshowaudiodec.h: + * sys/directshow/dshowdecwrapper/gstdshowfakesrc.cpp: + * sys/directshow/dshowdecwrapper/gstdshowfakesrc.h: + * sys/directshow/dshowdecwrapper/gstdshowutil.cpp: + * sys/directshow/dshowdecwrapper/gstdshowutil.h: + * sys/directshow/dshowdecwrapper/gstdshowvideodec.cpp: + * sys/directshow/dshowdecwrapper/gstdshowvideodec.h: + * sys/directshow/dshowsinkwrapper/dshowvideofakesrc.cpp: + * sys/directshow/dshowsinkwrapper/dshowvideosink.cpp: + * sys/directshow/dshowsinkwrapper/dshowvideosink.h: + * sys/directshow/dshowsrcwrapper/gstdshow.h: + * sys/directshow/dshowsrcwrapper/gstdshowaudiosrc.h: + * sys/directshow/dshowsrcwrapper/gstdshowsrcwrapper.cpp: + * sys/directshow/dshowsrcwrapper/gstdshowvideosrc.cpp: + * sys/directshow/dshowsrcwrapper/gstdshowvideosrc.h: + directshow: Remove white spaces + Part-of: + +2021-10-19 16:10:06 -0300 Martin Reboredo + + * docs/plugins/gst_plugins_cache.json: + * ext/vulkan/gstvulkan.c: + * ext/vulkan/gstvulkanelements.h: + * ext/vulkan/meson.build: + * ext/vulkan/vkshaderspv.c: + * ext/vulkan/vkshaderspv.h: + vulkanshaderspv: SPIRV based filter + Part-of: + +2022-02-18 16:23:09 -0500 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codecvp9dec.c: + v4l2codecs: vp9: Fix reset_frame_context parameter + It was assumed that the kernel parameters would match with the bitstream value + but instead the author when with another set of value. Surprisingly, this + makes no difference with the resulting fluster score. + Part-of: + +2022-02-18 16:02:27 -0500 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codecvp9dec.c: + v4l2codecs: vp9: Only fill compressed headers if needed + Fixes: 13944cf3ee871722 ("v4l2codecs: vp9: Make compressed hdr control optional") + Part-of: + +2022-01-14 23:42:27 -0600 Tim Mooney + + * sys/v4l2codecs/linux/types-compat.h: + v4l2: include on Illumos + Needed for _IOR/_IORW + Part-of: + +2022-01-26 21:06:45 +0100 Loic Le Page + + * sys/directshow/dshowsinkwrapper/dshowvideofakesrc.cpp: + * sys/directshow/dshowsinkwrapper/dshowvideofakesrc.h: + * sys/directshow/dshowsinkwrapper/dshowvideosink.cpp: + * sys/directshow/dshowsinkwrapper/dshowvideosink.h: + * sys/directshow/dshowsinkwrapper/meson.build: + * sys/directshow/dshowvideosink/README: + * sys/directshow/meson.build: + Add build files and fix build for gst-plugins-bad dshowsinkwrapper plugin + dshowsinkwrapper plugin is the old dshowvideosink plugin that has been + renamed to be compliant with the actuel plugin name in the source code. + Part-of: + +2022-01-26 21:03:10 +0100 Loic Le Page + + * sys/directshow/dshowsrcwrapper/BUILD.txt: + * sys/directshow/dshowsrcwrapper/CMakeLists.txt: + * sys/directshow/dshowsrcwrapper/gstdshowvideosrc.cpp: + * sys/directshow/dshowsrcwrapper/meson.build: + * sys/directshow/meson.build: + Add build files and fix build for gst-plugins-bad dshowsrcwrapper plugin + Part-of: + +2022-01-26 20:58:12 +0100 Loic Le Page + + * sys/directshow/dshowdecwrapper/CMakeLists.txt: + * sys/directshow/dshowdecwrapper/gstdshowvideodec.cpp: + * sys/directshow/dshowdecwrapper/meson.build: + * sys/directshow/meson.build: + Add build files and fix build for gst-plugins-bad dshowdecwrapper plugin + Part-of: + +2022-01-26 20:43:09 +0100 Loic Le Page + + * meson_options.txt: + * sys/directshow/meson.build: + * sys/directshow/strmbase/LICENSE: + * sys/directshow/strmbase/baseclasses/amextra.cpp: + * sys/directshow/strmbase/baseclasses/amextra.h: + * sys/directshow/strmbase/baseclasses/amfilter.cpp: + * sys/directshow/strmbase/baseclasses/amfilter.h: + * sys/directshow/strmbase/baseclasses/amvideo.cpp: + * sys/directshow/strmbase/baseclasses/arithutil.cpp: + * sys/directshow/strmbase/baseclasses/cache.h: + * sys/directshow/strmbase/baseclasses/checkbmi.h: + * sys/directshow/strmbase/baseclasses/combase.cpp: + * sys/directshow/strmbase/baseclasses/combase.h: + * sys/directshow/strmbase/baseclasses/cprop.cpp: + * sys/directshow/strmbase/baseclasses/cprop.h: + * sys/directshow/strmbase/baseclasses/ctlutil.cpp: + * sys/directshow/strmbase/baseclasses/ctlutil.h: + * sys/directshow/strmbase/baseclasses/ddmm.cpp: + * sys/directshow/strmbase/baseclasses/ddmm.h: + * sys/directshow/strmbase/baseclasses/dllentry.cpp: + * sys/directshow/strmbase/baseclasses/dllsetup.cpp: + * sys/directshow/strmbase/baseclasses/dllsetup.h: + * sys/directshow/strmbase/baseclasses/dxmperf.h: + * sys/directshow/strmbase/baseclasses/fourcc.h: + * sys/directshow/strmbase/baseclasses/measure.h: + * sys/directshow/strmbase/baseclasses/msgthrd.h: + * sys/directshow/strmbase/baseclasses/mtype.cpp: + * sys/directshow/strmbase/baseclasses/mtype.h: + * sys/directshow/strmbase/baseclasses/outputq.cpp: + * sys/directshow/strmbase/baseclasses/outputq.h: + * sys/directshow/strmbase/baseclasses/perflog.cpp: + * sys/directshow/strmbase/baseclasses/perflog.h: + * sys/directshow/strmbase/baseclasses/perfstruct.h: + * sys/directshow/strmbase/baseclasses/pstream.cpp: + * sys/directshow/strmbase/baseclasses/pstream.h: + * sys/directshow/strmbase/baseclasses/pullpin.cpp: + * sys/directshow/strmbase/baseclasses/pullpin.h: + * sys/directshow/strmbase/baseclasses/refclock.cpp: + * sys/directshow/strmbase/baseclasses/refclock.h: + * sys/directshow/strmbase/baseclasses/reftime.h: + * sys/directshow/strmbase/baseclasses/renbase.cpp: + * sys/directshow/strmbase/baseclasses/renbase.h: + * sys/directshow/strmbase/baseclasses/schedule.cpp: + * sys/directshow/strmbase/baseclasses/schedule.h: + * sys/directshow/strmbase/baseclasses/seekpt.cpp: + * sys/directshow/strmbase/baseclasses/seekpt.h: + * sys/directshow/strmbase/baseclasses/source.cpp: + * sys/directshow/strmbase/baseclasses/source.h: + * sys/directshow/strmbase/baseclasses/streams.h: + * sys/directshow/strmbase/baseclasses/strmctl.cpp: + * sys/directshow/strmbase/baseclasses/strmctl.h: + * sys/directshow/strmbase/baseclasses/sysclock.cpp: + * sys/directshow/strmbase/baseclasses/sysclock.h: + * sys/directshow/strmbase/baseclasses/transfrm.cpp: + * sys/directshow/strmbase/baseclasses/transfrm.h: + * sys/directshow/strmbase/baseclasses/transip.cpp: + * sys/directshow/strmbase/baseclasses/transip.h: + * sys/directshow/strmbase/baseclasses/videoctl.cpp: + * sys/directshow/strmbase/baseclasses/videoctl.h: + * sys/directshow/strmbase/baseclasses/vtrans.cpp: + * sys/directshow/strmbase/baseclasses/vtrans.h: + * sys/directshow/strmbase/baseclasses/winctrl.cpp: + * sys/directshow/strmbase/baseclasses/winctrl.h: + * sys/directshow/strmbase/baseclasses/winutil.cpp: + * sys/directshow/strmbase/baseclasses/winutil.h: + * sys/directshow/strmbase/baseclasses/wxdebug.cpp: + * sys/directshow/strmbase/baseclasses/wxdebug.h: + * sys/directshow/strmbase/baseclasses/wxlist.cpp: + * sys/directshow/strmbase/baseclasses/wxlist.h: + * sys/directshow/strmbase/baseclasses/wxutil.cpp: + * sys/directshow/strmbase/baseclasses/wxutil.h: + * sys/directshow/strmbase/meson.build: + * sys/meson.build: + Add directshow strmbase library source code from Microsoft repo + Original repo is here: + https://github.com/microsoft/Windows-classic-samples + Part-of: + +2022-02-16 14:53:12 +0100 Loïc Le Page + + * sys/directshow/dshowdecwrapper/CMakeLists.txt: + * sys/directshow/dshowdecwrapper/gstdshowaudiodec.cpp: + * sys/directshow/dshowdecwrapper/gstdshowaudiodec.h: + * sys/directshow/dshowdecwrapper/gstdshowdecwrapper.cpp: + * sys/directshow/dshowdecwrapper/gstdshowdecwrapper.h: + * sys/directshow/dshowdecwrapper/gstdshowfakesrc.cpp: + * sys/directshow/dshowdecwrapper/gstdshowfakesrc.h: + * sys/directshow/dshowdecwrapper/gstdshowutil.cpp: + * sys/directshow/dshowdecwrapper/gstdshowutil.h: + * sys/directshow/dshowdecwrapper/gstdshowvideodec.cpp: + * sys/directshow/dshowdecwrapper/gstdshowvideodec.h: + * sys/directshow/dshowsrcwrapper/BUILD.txt: + * sys/directshow/dshowsrcwrapper/CMakeLists.txt: + * sys/directshow/dshowsrcwrapper/dshowdeviceprovider.cpp: + * sys/directshow/dshowsrcwrapper/dshowdeviceprovider.h: + * sys/directshow/dshowsrcwrapper/gstdshow.cpp: + * sys/directshow/dshowsrcwrapper/gstdshow.h: + * sys/directshow/dshowsrcwrapper/gstdshowaudiosrc.cpp: + * sys/directshow/dshowsrcwrapper/gstdshowaudiosrc.h: + * sys/directshow/dshowsrcwrapper/gstdshowfakesink.cpp: + * sys/directshow/dshowsrcwrapper/gstdshowfakesink.h: + * sys/directshow/dshowsrcwrapper/gstdshowsrcwrapper.cpp: + * sys/directshow/dshowsrcwrapper/gstdshowvideosrc.cpp: + * sys/directshow/dshowsrcwrapper/gstdshowvideosrc.h: + * sys/directshow/dshowvideosink/README: + * sys/directshow/dshowvideosink/dshowvideofakesrc.cpp: + * sys/directshow/dshowvideosink/dshowvideofakesrc.h: + * sys/directshow/dshowvideosink/dshowvideosink.cpp: + * sys/directshow/dshowvideosink/dshowvideosink.h: + Move all directshow plugins to the same sub-folder + Part-of: + +2022-01-15 00:04:05 -0600 Tim Mooney + + * ext/curl/meson.build: + * gst/festival/meson.build: + * meson.build: + * sys/shm/meson.build: + meson: check for libsocket and libnsl + If present, add '-lsocket' and '-lnsl' to network_deps. + ext/curl/meson.build: add network_deps to dependencies + gst/festival/meson.build: same + sys/shm/meson.build: same + Fixes linking issues on Illumos distros. + Part-of: + +2022-02-14 22:59:01 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11_private.h: + * gst-libs/gst/d3d11/gstd3d11device.cpp: + * gst-libs/gst/d3d11/gstd3d11format.h: + * sys/d3d11/gstd3d11converter.cpp: + * tests/check/elements/d3d11colorconvert.c: + d3d11: Add support for AYUV, AYUV64, and RGBA64_LE formats + Note that AYUV and AYUV64 formats will be used to expand format + support, especially some packed YUV formats (e.g., Y410, YUY2) + are common DXGI formats used for hardware decoder/encoder on Windows + but those formats cannot be used as a render target. We need to handle + them differently without pixel shader help, using compute shader + for example. + Part-of: + +2022-02-13 20:32:48 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11_private.h: + * gst-libs/gst/d3d11/gstd3d11bufferpool.cpp: + * gst-libs/gst/d3d11/gstd3d11device.cpp: + * gst-libs/gst/d3d11/gstd3d11format.cpp: + * gst-libs/gst/d3d11/gstd3d11format.h: + * gst-libs/gst/d3d11/gstd3d11memory.cpp: + * gst-libs/gst/d3d11/gstd3d11stagingbufferpool.cpp: + d3d11: Reorganize format mapping table + ... and handle GST <-> D3D11 format mapping in a single place to + make adding format easier + Part-of: + +2022-02-13 04:36:39 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11bufferpool.cpp: + * gst-libs/gst/d3d11/gstd3d11device.cpp: + * gst-libs/gst/d3d11/gstd3d11device.h: + * gst-libs/gst/d3d11/gstd3d11format.cpp: + * gst-libs/gst/d3d11/gstd3d11format.h: + * gst-libs/gst/d3d11/gstd3d11memory.cpp: + * gst-libs/gst/d3d11/gstd3d11memory.h: + * gst-libs/gst/d3d11/gstd3d11stagingbufferpool.cpp: + * sys/d3d11/gstd3d11convert.cpp: + * sys/d3d11/gstd3d11converter.cpp: + * sys/d3d11/gstd3d11decoder.cpp: + * sys/d3d11/gstd3d11pluginutils.cpp: + * sys/d3d11/gstd3d11upload.cpp: + * sys/d3d11/gstd3d11window.cpp: + * sys/d3d11/gstd3d11window_dummy.cpp: + * sys/mediafoundation/plugin.cpp: + d3d11: Store device format in struct + Holding pointer to struct was unsafe approach because + the pointer to d3d11 format will be invalidated once d3d11 device + object is released + Part-of: + +2021-10-01 20:27:28 +0900 Seungha Yang + + * gst-libs/gst/vulkan/win32/gstvkwindow_win32.c: + * gst/festival/gstfestival.c: + * meson.build: + * sys/ipcpipeline/gstipcpipelinecomm.c: + * sys/mediafoundation/gstmfvideoencoder.cpp: + * tests/examples/nvcodec/nvcodec.c: + meson: Do hard build error for some MSVC warnings + Handle various MSVC warnings as errors for development version. + Part-of: + +2022-02-14 16:18:54 +0300 Dmitry Osipenko + + * sys/v4l2codecs/gstv4l2codech264dec.c: + v4l2codecs: h264: Correct scaling matrix ABI check + Scaling matrix V4L UAPI control not presents on NVIDIA Tegra, the default + matrix should be used in this case. Mark scaling matrix presence optional. + Fixes: 47bfa71530c ("v4l2codecs: h264: Improve ABI check ") + Part-of: + +2022-01-21 15:32:09 +0800 Mengkejiergeli Ba + + * sys/msdk/gstmsdkdec.c: + * sys/msdk/gstmsdkdec.h: + msdkdec: Enable SFC scaling for AVC and HEVC + Decoder SFC only supports down-scaling at most to 1/8. + For example, given a 4K bistream, SFC can scale it to 1080p via: + "msdkh265dec ! video/x-raw,width=1920,height=1080 ! glimagesink" + Part-of: + +2021-12-15 11:49:40 +0800 Mengkejiergeli Ba + + * sys/msdk/gstmsdkdec.c: + * sys/msdk/gstmsdkh264dec.c: + * sys/msdk/gstmsdkh265dec.c: + msdkdec: Enable SFC csc for AVC and HEVC + Decoder SFC will be triggered when default output format is not accept at + downstream. One use case below can work without using msdkvpp: + "! msdkh265dec ! "video/x-raw,format=BGRA" ! glimagesink", + Part-of: + +2021-11-17 17:05:09 +0800 Mengkejiergeli Ba + + * sys/msdk/gstmsdkdec.c: + * sys/msdk/gstmsdkdec.h: + msdkdec: Add SFC codes + SFC refers to Scaler Format Converter, more details here: + https://01.org/sites/default/files/documentation/intel-gfx-prm-osrc-kbl-vol15-sfc.pdf + By attaching mfxExtDecVideoProcessing buffer to mfxVideoParam, decoder + can do SFC for csc and scaling. + MSDK will check if surface bitdepth equals to input when no SFC is + triggered, which means in the case of SFC, there is no need to update + surface bitdepth via gst_msdk_update_mfx_frame_info_from_mfx_video_param. + Part-of: + +2022-02-16 02:23:58 +0900 Seungha Yang + + * sys/d3d11/gstd3d11converter.cpp: + d3d11converter: Fix for missing GRAY conversion + Add missing Y410 -> GRAY and GRAY -> semi-planar conversion + Part-of: + +2022-02-16 02:11:53 +0900 Seungha Yang + + * sys/d3d11/gstd3d11converter.cpp: + d3d11converter: Don't use FIXME_OBJECT for non-GstObject + ... and print ERROR messages for unexpected input/output formats + Part-of: + +2021-11-10 15:18:24 +0800 He Junyan + + * gst-libs/gst/va/gstvadisplay.c: + * gst-libs/gst/va/gstvadisplay.h: + * sys/va/gstvacaps.c: + * sys/va/gstvadecoder.c: + * sys/va/gstvadisplay_priv.c: + * sys/va/gstvafilter.c: + * sys/va/gstvasurfacecopy.c: + * sys/va/vasurfaceimage.c: + va: Delete the display lock/unlock when we call VA-API. + According to the VA-API's description, they are MT-safe, we do not + need to care about that in our middleware layer. The lock/unlock + operations have overhead and make the performance lower. + Part-of: + +2022-02-08 15:22:39 +0100 Jan Alexander Steffens (heftig) + + * ext/openaptx/gstopenaptxdec.h: + * ext/openaptx/gstopenaptxenc.h: + * ext/openaptx/meson.build: + openaptx: Support libfreeaptx + [libfreeaptx][1] is a fork of libopenapt 0.2.0, used by pipewire. + [1]: https://github.com/iamthehorker/libfreeaptx + Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1642 + Closes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1589 + Part-of: + +2022-02-15 02:26:46 +0900 Seungha Yang + + * sys/d3d11/gstd3d11converter.cpp: + d3d11converter: Fix RGB to GRAY conversion + Fix typo in shader code + Part-of: + +2022-02-14 12:57:44 +0100 Stéphane Cerveau + + * gst/mpegtsdemux/tsdemux.c: + tsdemux: unlock mutex on -1 start_offfset + Closing #1013 + Part-of: + +2022-02-13 22:39:46 +0900 Seungha Yang + + * sys/d3d11/gstd3d11download.cpp: + d3d11download: Fix decide_allocation + Caps should be parsed in any cases. + Part-of: + +2022-02-13 10:49:31 +0800 He Junyan + + * sys/va/meson.build: + meson: va: Add va option check into plugin's build. + Because the liblibgstva is built unconditionally, we now move the + va option check into va plugin's build. + Part-of: + +2022-02-13 10:39:37 +0800 He Junyan + + * gst-libs/gst/va/meson.build: + meson: va: Remove va option check from gst-libs + Building libgstva-1.0 unconditionally for the va implementation can be + used by non-va plugins such as MSDK even when va plugin is disabled + Part-of: + +2022-02-12 10:05:11 +0000 Philippe Normand + + * gst-libs/gst/webrtc/dtlstransport.c: + dtlstransport: Notify ICE transport property changes + The application might track the underlying ICE transport, so not notifying + changes might lead to use-after-free issues. + Part-of: + +2022-02-12 14:51:51 +0800 He Junyan + + * sys/va/gstvavpp.c: + vavpp: Fix the caps leak in the transform_caps() function. + Part-of: + +2022-02-12 00:51:56 +0900 Seungha Yang + + * gst-libs/gst/d3d11/meson.build: + meson: d3d11: Remove d3d11 option check from gst-libs + Build gstd3d11-1.0 unconditionally for d3d11 implementation can be used + by non-d3d11 plugins even when d3d11 plugin is disabled + Part-of: + +2022-02-10 22:31:06 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11_fwd.h: + * gst-libs/gst/d3d11/gstd3d11_private.h: + * gst-libs/gst/d3d11/gstd3d11bufferpool.cpp: + * gst-libs/gst/d3d11/gstd3d11config.h.meson: + * gst-libs/gst/d3d11/gstd3d11device.cpp: + * gst-libs/gst/d3d11/gstd3d11format.cpp: + * gst-libs/gst/d3d11/gstd3d11stagingbufferpool.cpp: + * gst-libs/gst/d3d11/meson.build: + * sys/d3d11/gstd3d11convert.cpp: + * sys/d3d11/gstd3d11pluginutils.cpp: + * sys/d3d11/gstd3d11pluginutils.h: + * sys/d3d11/gstd3d11screencapturedevice.h: + * sys/d3d11/gstd3d11videoprocessor.cpp: + * sys/d3d11/gstd3d11videoprocessor.h: + * sys/d3d11/gstd3d11window.cpp: + * sys/d3d11/gstd3d11window_dummy.cpp: + * sys/d3d11/gstd3d11window_win32.cpp: + * sys/d3d11/meson.build: + * sys/d3d11/plugin.cpp: + * sys/mediafoundation/plugin.cpp: + d3d11: Update build-time dependency + Remove all the d3d11 and dxgi header version dependent ifdef + and bump the minimum requirement to d3d11_4.h and dxgi1_6.h. + We are already failing support old Visual Studio (Windows SDK actually) + such as Visual Studio 2015. Note that our MinGW toolchain satisfies + the requirement. + From runtime point of view, this change should be fine since + we are checking OS version with IUnknown::QueryInterface() + everywhere in order to check API availability + Part-of: + +2021-05-08 17:54:34 +0800 He Junyan + + * sys/msdk/gstmsdkenc.c: + * sys/msdk/gstmsdkenc.h: + * sys/msdk/gstmsdkh265enc.c: + * sys/msdk/gstmsdkvp9enc.c: + * sys/msdk/msdk.h: + MSDK: Import VA surface as encoder's input. + We make all MSDK encoders declare "memory:VAMemory" feature. Then + the pipeline such as: + gst-launch-1.0 -vf filesrc location=xxx.h264 ! h264parse ! \ + vah264dec ! msdkh265enc ! fakesink + will choose VA memory caps between the VA decoder and MSDK encoder. + Part-of: + +2021-05-08 17:26:27 +0800 He Junyan + + * sys/msdk/gstmsdk_va.c: + * sys/msdk/gstmsdk_va.h: + * sys/msdk/meson.build: + MSDK: Add helper function to peek VA surface of VA kind gstbuffer. + Part-of: + +2021-05-08 15:51:11 +0800 He Junyan + + * sys/msdk/gstmsdkenc.c: + MSDK: Handle context query into the encoder's query function. + The MSDK encoder's query function is not set and it just forwards + all query to its base class. We now need to answer the context + query correctly. Other VA plugins need to query the VA display. + By the way, the current query of "gst.msdk.Context" is also missing. + The other MSDK elements must depend on the bin's context message( + sent in context_propagate()) to set their MsdkContext correctly. + Part-of: + +2021-08-17 22:36:59 +0800 He Junyan + + * sys/msdk/gstmsdkvpp.c: + MSDK: Handle context query into the VPP's query function. + The MSDK VPP's query function is not set and it just forwards + all query to its base class. We now need to answer the context + query correctly. Other VA plugins need to query the VA display. + By the way, the current query of "gst.msdk.Context" is also missing. + The other MSDK elements must depend on the bin's context message( + sent in context_propagate()) to set their MsdkContext correctly. + Part-of: + +2021-08-17 22:34:43 +0800 He Junyan + + * sys/msdk/gstmsdkdec.c: + MSDK: Handle context query into the decoder's query function. + The MSDK decoder's query function is not set and it just forwards + all query to its base class. We now need to answer the context + query correctly. Other VA plugins need to query the VA display. + By the way, the current query of "gst.msdk.Context" is also missing. + The other MSDK elements must depend on the bin's context message( + sent in context_propagate()) to set their MsdkContext correctly. + Part-of: + +2021-08-17 22:33:18 +0800 He Junyan + + * sys/msdk/gstmsdkcontextutil.c: + * sys/msdk/gstmsdkcontextutil.h: + MSDK: Add a handle_context_query() helper function. + Part-of: + +2021-08-17 21:51:58 +0800 He Junyan + + * sys/msdk/gstmsdkcontextutil.c: + * sys/msdk/gstmsdkcontextutil.h: + * sys/msdk/gstmsdkdec.c: + * sys/msdk/gstmsdkenc.c: + * sys/msdk/gstmsdkvpp.c: + MSDK: Improve the GstContext setting logic. + We now can use the gst va lib's display to create our MSDK context, + and use its helper functions to simplify our code. The improved logic + is like this: + 1. Every MSDK element should use gst_msdk_context_find() to find a MSDK + context from neighbour. If valid, reuse it. + 2. Use gst_msdk_ensure_new_context(). It will first query neighbours + about the GstVaDisplay, if found(e.g. some VA element is connected), + use gst_msdk_context_from_external_display() to create a MSDK context. + 3. Then, creating the MSDK context from scratch. It creates both the + display and MSDK context. + Part-of: + +2021-05-08 13:49:23 +0800 He Junyan + + * sys/msdk/gstmsdkcontext.c: + * sys/msdk/gstmsdkcontext.h: + MSDK: Add new_with_va_display() helper function to create context. + Part-of: + +2021-05-08 11:44:57 +0800 He Junyan + + * sys/msdk/gstmsdkcontext.c: + * sys/msdk/gstmsdkcontext.h: + MSDK: Use the VA display object to replace the raw display handle. + The VA display object from VA lib is a common defined object. which + contain the whole display things. It is easier to use, and more important, + we can share it with the other VA plugins and keep all the VA related + plugins working on the same GPU device. + We also delete the useless gst_msdk_context_get_fd() API. + Part-of: + +2022-02-11 11:11:03 +0800 He Junyan + + * sys/msdk/meson.build: + MSDK: Add the gst va lib into MSDK's dependency. + Part-of: + +2022-02-10 12:52:30 +0800 He Junyan + + * gst/videoparsers/gstav1parse.c: + av1parse: Add temporal unit check when TD is absent. + The current manner for deciding the new temporal unit is based on + temporal delimiter(TD) OBU. We only start a new temporal unit when + the TD comes. + But some streams do not have TD at all, which makes the output "TU" + alignment fail to work. We now add check based on the relationship + between the different layers and it can successfully judge the TU edge. + Part-of: + +2022-02-04 17:12:15 +0800 He Junyan + + * gst/videoparsers/gstav1parse.c: + av1parse: let the parse continue when MISSING_OBU_REFERENCE error. + Some streams may have verbose OBUs before a valid sequence header. We + should let the parse continue rather than return a error. + Part-of: + +2022-02-04 11:40:18 +0800 He Junyan + + * gst/videoparsers/gstav1parse.c: + av1parse: Continue when we fail to detect the alignment. + Some streams may have problematic OBUs at the beginning, which causes + the parse fail to detect the alignment and return error. For example, + there may be verbose OBUs before a valid sequence, which should be + discarded until we meet a valid sequence. We should let the parse + continue when we meet such cases, rather than just return error. + Part-of: + +2021-03-30 19:23:12 +0900 Seungha Yang + + * gst/ivfparse/gstivfparse.c: + ivfparse: Don't set zero resolution on caps + It could be zero if the information is not available at ivfparse + side, or not implemented. In that case, simply don't set + width/height on caps, otherwise downstream would be confused + Part-of: + +2022-01-29 01:52:26 +0900 Seungha Yang + + * sys/mediafoundation/gstmfmp3dec.cpp: + * sys/mediafoundation/gstmfmp3dec.h: + * sys/mediafoundation/meson.build: + * sys/mediafoundation/plugin.cpp: + mediafoundation: Add support for MP3 decoding + See also + https://docs.microsoft.com/en-us/windows/win32/medfound/windows-media-mp3-decoder + Part-of: + +2022-01-27 02:20:37 +0900 Seungha Yang + + * sys/mediafoundation/gstmfaacdec.cpp: + * sys/mediafoundation/gstmfaacdec.h: + * sys/mediafoundation/gstmfaudiodecoder.cpp: + * sys/mediafoundation/gstmfaudiodecoder.h: + * sys/mediafoundation/gstmfutils.cpp: + * sys/mediafoundation/gstmfutils.h: + * sys/mediafoundation/meson.build: + * sys/mediafoundation/plugin.cpp: + mediafoundation: Add support for AAC decoding + See also + https://docs.microsoft.com/en-us/windows/win32/medfound/aac-decoder + Part-of: + +2022-01-28 01:45:30 +0900 Seungha Yang + + * sys/mediafoundation/gstmfaacenc.cpp: + * sys/mediafoundation/gstmfaudioencoder.cpp: + * sys/mediafoundation/gstmfaudioencoder.h: + * sys/mediafoundation/gstmfh264enc.cpp: + * sys/mediafoundation/gstmfh265enc.cpp: + * sys/mediafoundation/gstmfmp3enc.cpp: + * sys/mediafoundation/gstmfsourcereader.cpp: + * sys/mediafoundation/gstmftransform.cpp: + * sys/mediafoundation/gstmfvideoencoder.cpp: + * sys/mediafoundation/gstmfvideoencoder.h: + * sys/mediafoundation/gstmfvp9enc.cpp: + * sys/mediafoundation/meson.build: + * sys/mediafoundation/plugin.cpp: + mediafoundation: Cosmetic changes + Rename baseclass to be consistent with other Windows plugins + Part-of: + +2022-01-27 02:26:02 +0900 Seungha Yang + + * sys/mediafoundation/gstmfaudioenc.cpp: + * sys/mediafoundation/gstmftransform.cpp: + * sys/mediafoundation/gstmfvideoenc.cpp: + mediafoundation: Use & operator instead of GetAddressOf() + Use shorter expression + Part-of: + +2022-01-24 02:41:29 +0900 Seungha Yang + + * sys/mediafoundation/gstmfaacenc.cpp: + * sys/mediafoundation/gstmfaudioenc.cpp: + * sys/mediafoundation/gstmfcapturewinrt.cpp: + * sys/mediafoundation/gstmfdevice.cpp: + * sys/mediafoundation/gstmfh264enc.cpp: + * sys/mediafoundation/gstmfh265enc.cpp: + * sys/mediafoundation/gstmfmp3enc.cpp: + * sys/mediafoundation/gstmfplatloader.cpp: + * sys/mediafoundation/gstmfsourceobject.cpp: + * sys/mediafoundation/gstmfsourcereader.cpp: + * sys/mediafoundation/gstmftransform.cpp: + * sys/mediafoundation/gstmfutils.cpp: + * sys/mediafoundation/gstmfvideobuffer.cpp: + * sys/mediafoundation/gstmfvideoenc.cpp: + * sys/mediafoundation/gstmfvideosrc.cpp: + * sys/mediafoundation/gstmfvp9enc.cpp: + * sys/mediafoundation/gstwin32devicewatcher.cpp: + * sys/mediafoundation/mediacapturewrapper.cpp: + * sys/mediafoundation/meson.build: + * sys/mediafoundation/plugin.cpp: + mediafoundation: Port to C++ + Part-of: + +2022-02-09 03:27:41 +0900 Seungha Yang + + * sys/d3d11/plugin.cpp: + d3d11decoder: Promote rank to primary except for mpeg2 + Our D3D11/DXVA codecs implementation has been verified + during 1.18 and 1.20 development cycle and also via the Fluster + test framework. Similar to the case of nvdec and vtdec, + we can prefer hardware over software in most cases + Part-of: + +2022-02-09 15:05:14 -0500 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codecvp9dec.c: + v4l2codecs: vp9: Fix duplicating a duplicated picture + Duplicating a picture what was already a dup was leading to a crash. Rename + the custom picture flags as HOLDS_BUFFER to make its meaning clear. Then save + then ref and store the picture as userdata, so it can be obtained when + duplicating. Finally, mark the doplicated as HOLDS_BUFFER to avoid thinking it + holds a request. + Part-of: + +2022-02-10 01:48:23 +0900 Seungha Yang + + * sys/mediafoundation/gstmfaudioenc.cpp: + mfaudioenc: Handle empty IMFMediaBuffer + IMFMediaBuffer may not hold encoded data, which seems to happen + while draining. + Part-of: + +2022-02-03 10:10:44 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvadecoder.c: + va: decoder: Log profile name. + Part-of: + +2022-01-24 16:25:18 +0100 Víctor Manuel Jáquez Leal + + * sys/va/gstvafilter.c: + va: filter: Log the added filter name. + Part-of: + +2021-10-25 13:41:49 +0200 Víctor Manuel Jáquez Leal + + * sys/va/gstvafilter.c: + * sys/va/gstvafilter.h: + * sys/va/gstvavpp.c: + vapostproc: Process HDR caps + This patch adds a new parameter: hdr-tone-mapping (same as + vaapipostproc), if the HDR capabilites are availabe in driver, and + it's disabled by default. + If hdr-tone-mapping is enabled then HDR fields in sink caps are + processed in frames from HDR to SDR, removing those hdr fields in + source pad caps too. + hdr-tone-mapping is not enabled if a color conversion is also + requested, since it fails to process in the iHD driver, so far. + Part-of: + +2021-09-30 17:42:19 +0200 Víctor Manuel Jáquez Leal + + * gst-libs/gst/va/meson.build: + * sys/msdk/meson.build: + build: Add libva dependency fallback. + Then libva can be subproject and used by either gstreamer-vaapi, + va and msdk in gst-plugins-bad. + Part-of: + +2022-02-06 23:20:32 +0900 Sangchul Lee + + * ext/webrtc/gstwebrtcice.c: + webrtcice: Fix memory leaks in gst_webrtc_ice_add_candidate() + Part-of: + +2022-01-28 14:49:42 -0500 Nicolas Dufresne + + * sys/v4l2codecs/gstv4l2codecvp9dec.c: + * sys/v4l2codecs/gstv4l2decoder.c: + v4l2codecs: vp9: Make compressed hdr control optional + This is to supported by Mediatek VP9 driver. Mediatek handles + the forward probabilities in hardware hence does not need and + does not implement support for + V4L2_CID_STATELESS_VP9_COMPRESSED_HDR. + Part-of: + +2022-02-07 12:34:53 +0100 Víctor Manuel Jáquez Leal + + * gst-libs/gst/va/meson.build: + va: Fix and simplify build recipe. + 1. Use api_version variable rather than static string. + 2. Remove pkgconfig generation since currently the library + is not installed, only used internally. + 3. Rely on dependency "required" to abort compilation. + Part-of: + +2022-02-07 11:27:57 +0100 Víctor Manuel Jáquez Leal + + * gst-libs/gst/va/meson.build: + * sys/va/meson.build: + va: Remove libgudev crumbs in library. + In commit e699aaeb we moved linking of libgudev to the plugin rather + the library, because it's only used in the plugin. But the dependency + check is still done in library. + This patch removes the dependency check in library, and updates the + dependency check in plugin. + Part-of: + +2022-02-08 04:51:24 +0900 Seungha Yang + + * sys/msdk/msdk.c: + * sys/msdk/msdk.h: + msdk: Fix for MFXUnload symbol re-definition build error + Fix for libgstreamer-full build + Part-of: + +2021-12-25 00:13:04 +0900 Seungha Yang + + * sys/qsv/gstqsvh265enc.cpp: + * sys/qsv/gstqsvh265enc.h: + * sys/qsv/meson.build: + * sys/qsv/plugin.cpp: + qsv: Add support for HEVC encoding + main and main-10 profiles are supported for now + Part-of: + +2021-12-19 21:39:53 +0900 Seungha Yang + + * sys/qsv/gstqsvallocator.cpp: + * sys/qsv/gstqsvallocator_d3d11.cpp: + * sys/qsv/gstqsvvp9enc.cpp: + * sys/qsv/gstqsvvp9enc.h: + * sys/qsv/meson.build: + * sys/qsv/plugin.cpp: + qsv: Add support for VP9 encoding and more video formats + Add VP9 encoder with 4:2:0 8 bits and 4:4:4 8/10 bits formats support + Part-of: + +2022-02-06 21:34:43 +0900 Seungha Yang + + * meson_options.txt: + * sys/meson.build: + * sys/qsv/gstqsvallocator.cpp: + * sys/qsv/gstqsvallocator.h: + * sys/qsv/gstqsvallocator_d3d11.cpp: + * sys/qsv/gstqsvallocator_d3d11.h: + * sys/qsv/gstqsvallocator_va.cpp: + * sys/qsv/gstqsvallocator_va.h: + * sys/qsv/gstqsvencoder.cpp: + * sys/qsv/gstqsvencoder.h: + * sys/qsv/gstqsvh264enc.cpp: + * sys/qsv/gstqsvh264enc.h: + * sys/qsv/gstqsvutils.cpp: + * sys/qsv/gstqsvutils.h: + * sys/qsv/libmfx/meson.build: + * sys/qsv/meson.build: + * sys/qsv/plugin.cpp: + qsv: Introduce H.264 Intel Quick Sync Video Encoder + A new implementation of Intel Quick Sync Video plugin. + This plugin supports both Windows and Linux but optimization for + VA/DMABuf is not implemented yet. + This new plugin has some notable differences compared with existing + MSDK plugin. + * Encoder will expose formats which can be natively supported + without internal conversion. This will make encoder + control/negotiation flow much simpler and cleaner than + that of MSDK plugin. + * This plugin includes QSV specific library loading helper, + called dispatcher, with QSV SDK headers as a part of this plugin. + So, there will be no more SDK version dependent #ifdef in the code + and also there will be no more build-time MSDK/oneVPL SDK + dependency. + * Memory allocator interop between GStreamer and QSV is re-designed + and decoupled. Instead of implementing QSV specific allocator/bufferpool, + this plugin will make use of generic GStreamer memory + allocator/bufferpool (e.g., GstD3D11Allocator and GstD3D11BufferPool). + Specifically, GstQsvAllocator object will help interop between + GstMemory and mfxFrameAllocator memory abstraction layers. + Note that because of the design decision, VA/DMABuf support is not made + as a part of this initial commit. We can add the optimization for Linux + later once GstVA library exposes allocator/bufferpool implementation as + an API like GstD3D11. + * Initial encoder implementation supports interop with GstD3D11 + infrastructure, including zero-copy encoding with upstream D3D11 element. + Part-of: + +2021-12-01 22:18:42 +0900 Seungha Yang + + * sys/qsv/libmfx/dispatcher/windows/mfx_dxva2_device.h: + qsv: Remove unnecessary pargma message + We know what we are doing, just remove noisy build warnings + Part-of: + +2021-12-01 22:18:04 +0900 Seungha Yang + + * sys/qsv/libmfx/api/vpl/mfx.h: + * sys/qsv/libmfx/api/vpl/mfxadapter.h: + * sys/qsv/libmfx/api/vpl/mfxbrc.h: + * sys/qsv/libmfx/api/vpl/mfxcommon.h: + * sys/qsv/libmfx/api/vpl/mfxdefs.h: + * sys/qsv/libmfx/api/vpl/mfxdispatcher.h: + * sys/qsv/libmfx/api/vpl/mfxdispatcherprefixedfunctions.h: + * sys/qsv/libmfx/api/vpl/mfximplcaps.h: + * sys/qsv/libmfx/api/vpl/mfxjpeg.h: + * sys/qsv/libmfx/api/vpl/mfxmvc.h: + * sys/qsv/libmfx/api/vpl/mfxpcp.h: + * sys/qsv/libmfx/api/vpl/mfxsession.h: + * sys/qsv/libmfx/api/vpl/mfxstructures.h: + * sys/qsv/libmfx/api/vpl/mfxsurfacepool.h: + * sys/qsv/libmfx/api/vpl/mfxvideo++.h: + * sys/qsv/libmfx/api/vpl/mfxvideo.h: + * sys/qsv/libmfx/api/vpl/mfxvp8.h: + * sys/qsv/libmfx/dispatcher/linux/device_ids.h: + * sys/qsv/libmfx/dispatcher/linux/libvpl.map: + * sys/qsv/libmfx/dispatcher/linux/mfxloader.cpp: + * sys/qsv/libmfx/dispatcher/linux/mfxloader.h: + * sys/qsv/libmfx/dispatcher/linux/mfxvideo_functions.h: + * sys/qsv/libmfx/dispatcher/vpl/mfx_dispatcher_vpl.cpp: + * sys/qsv/libmfx/dispatcher/vpl/mfx_dispatcher_vpl.h: + * sys/qsv/libmfx/dispatcher/vpl/mfx_dispatcher_vpl_config.cpp: + * sys/qsv/libmfx/dispatcher/vpl/mfx_dispatcher_vpl_loader.cpp: + * sys/qsv/libmfx/dispatcher/vpl/mfx_dispatcher_vpl_log.cpp: + * sys/qsv/libmfx/dispatcher/vpl/mfx_dispatcher_vpl_log.h: + * sys/qsv/libmfx/dispatcher/vpl/mfx_dispatcher_vpl_lowlatency.cpp: + * sys/qsv/libmfx/dispatcher/vpl/mfx_dispatcher_vpl_msdk.cpp: + * sys/qsv/libmfx/dispatcher/vpl/mfx_dispatcher_vpl_win.h: + * sys/qsv/libmfx/dispatcher/windows/libmfx.def: + * sys/qsv/libmfx/dispatcher/windows/main.cpp: + * sys/qsv/libmfx/dispatcher/windows/mfx_critical_section.cpp: + * sys/qsv/libmfx/dispatcher/windows/mfx_critical_section.h: + * sys/qsv/libmfx/dispatcher/windows/mfx_dispatcher.cpp: + * sys/qsv/libmfx/dispatcher/windows/mfx_dispatcher.h: + * sys/qsv/libmfx/dispatcher/windows/mfx_dispatcher_defs.h: + * sys/qsv/libmfx/dispatcher/windows/mfx_dispatcher_log.cpp: + * sys/qsv/libmfx/dispatcher/windows/mfx_dispatcher_log.h: + * sys/qsv/libmfx/dispatcher/windows/mfx_driver_store_loader.cpp: + * sys/qsv/libmfx/dispatcher/windows/mfx_driver_store_loader.h: + * sys/qsv/libmfx/dispatcher/windows/mfx_dxva2_device.cpp: + * sys/qsv/libmfx/dispatcher/windows/mfx_dxva2_device.h: + * sys/qsv/libmfx/dispatcher/windows/mfx_exposed_functions_list.h: + * sys/qsv/libmfx/dispatcher/windows/mfx_function_table.cpp: + * sys/qsv/libmfx/dispatcher/windows/mfx_library_iterator.cpp: + * sys/qsv/libmfx/dispatcher/windows/mfx_library_iterator.h: + * sys/qsv/libmfx/dispatcher/windows/mfx_load_dll.cpp: + * sys/qsv/libmfx/dispatcher/windows/mfx_load_dll.h: + * sys/qsv/libmfx/dispatcher/windows/mfx_vector.h: + * sys/qsv/libmfx/dispatcher/windows/mfx_win_reg_key.cpp: + * sys/qsv/libmfx/dispatcher/windows/mfx_win_reg_key.h: + * sys/qsv/libmfx/dispatcher/windows/mfxvideo++.h: + * sys/qsv/libmfx/dispatcher/windows/version.rc.in: + qsv: Import libmfx API and dispatch code from oneVPL project + Copied from oneVPL project (https://github.com/oneapi-src/oneVPL) + v2022.0.3 tag at the commit of efc259f8b7ee5c334bca1a904a503186038bbbdd + This is corresponding to MFX API version 2.6 + Part-of: + +2021-12-07 21:29:05 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11memory.cpp: + d3d11memory: Inform subresource index via GstMapInfo::user_data + By using this way, caller does not need to call another method + gst_d3d11_memory_get_subresource_index() + Part-of: + +2022-02-06 21:36:28 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11bufferpool.cpp: + * gst-libs/gst/d3d11/gstd3d11memory.cpp: + * gst-libs/gst/d3d11/gstd3d11memory.h: + * gst-libs/gst/d3d11/gstd3d11stagingbufferpool.cpp: + * sys/d3d11/gstd3d11pluginutils.cpp: + d3d11memory: Add support for ID3D11Buffer + Allow wrap ID3D11Buffer via GstD3D11Memory object + At the moment, only staging ID3D11Buffer is supported. + Part-of: + +2022-02-01 00:50:53 +0900 Seungha Yang + + * sys/nvcodec/gstnvh265dec.c: + nvh265sldec: Fix for decoding 12bits stream + We've been exposing main-444-12 profile as a supported profile + in its sinkpad template but not actaully. Adding code to + covert 12 and 16 bits as well. + Part-of: + +2022-02-01 00:12:06 +0900 Seungha Yang + + * sys/nvcodec/gstnvdecoder.c: + * sys/nvcodec/gstnvdecoder.h: + * sys/nvcodec/gstnvh264dec.c: + * sys/nvcodec/gstnvh265dec.c: + * sys/nvcodec/gstnvvp8dec.c: + * sys/nvcodec/gstnvvp9dec.c: + nvdecoder: Fix for HEVC 4:4:4 format decoding + Map chroma_format_idc == 3 (which means 4:4:4 subsampling) correctly, + also pass coded bitdepth for decoder initialization instead of + inferring it from output format since they can be different. + Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/949 + Part-of: + +2022-02-07 22:38:02 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11stagingbufferpool.cpp: + d3d11stagingbufferpool: Fix typo in texture description + Fixing typo, it should be height + Part-of: + +2021-10-27 11:08:39 +0800 He Junyan + + * gst-libs/gst/va/gstva.h: + * gst-libs/gst/va/meson.build: + * sys/va/gstvaallocator.h: + * sys/va/gstvabasedec.c: + * sys/va/gstvabasetransform.c: + * sys/va/gstvacaps.h: + * sys/va/gstvadecoder.c: + * sys/va/gstvadecoder.h: + * sys/va/gstvadeinterlace.c: + * sys/va/gstvadevice.h: + * sys/va/gstvafilter.h: + * sys/va/gstvasurfacecopy.h: + * sys/va/gstvavpp.c: + * sys/va/vasurfaceimage.h: + * tests/examples/va/main.c: + * tests/examples/va/multiple-vpp.c: + va: Add a gstva.h to include all va lib header files. + And replacing all va lib headers with this new header files + when including. + Part-of: + +2021-10-07 14:31:28 +0800 He Junyan + + * gst-libs/gst/va/gstvautils.c: + * gst-libs/gst/va/gstvautils.h: + * gst-libs/gst/va/meson.build: + * sys/va/gstvabasedec.c: + * sys/va/gstvabasetransform.c: + * sys/va/gstvadeinterlace.c: + * sys/va/gstvavpp.c: + * sys/va/meson.build: + va: Move the vautils into the gst va lib. + The context query and handle are common logic for all va related + elements. So we move it from va plugins to the common gst va lib. + Part-of: + +2021-10-24 22:07:38 +0900 Seungha Yang + + * gst-libs/gst/codecs/gsth264decoder.h: + * gst-libs/gst/codecs/gstmpeg2decoder.h: + * sys/d3d11/gstd3d11h264dec.cpp: + * sys/d3d11/gstd3d11mpeg2dec.cpp: + * sys/nvcodec/gstnvh264dec.c: + * sys/v4l2codecs/gstv4l2codech264dec.c: + * sys/va/gstvah264dec.c: + * sys/va/gstvampeg2dec.c: + codecs: Stop claiming constness for refcounted object + It's almost pointless and makes little sense as subclass might + want to modify refcount of the object or so. And all subclasses + are already casting them to non-const version as well. + In a general sense, we need to avoid passing refcounted object + with const qualifier. + Part-of: + +2022-02-06 01:06:36 +0900 Seungha Yang + + * sys/d3d11/gstd3d11videosink.cpp: + d3d11videosink: Use staging buffer pool for non-d3d11 upstream + Part-of: + +2022-02-06 00:53:34 +0900 Seungha Yang + + * sys/d3d11/gstd3d11download.cpp: + * sys/d3d11/gstd3d11upload.cpp: + d3d11upload,d3d11download: Use staging buffer pool + Part-of: + +2022-02-05 23:25:12 +0900 Seungha Yang + + * sys/d3d11/gstd3d11decoder.cpp: + d3d11decoder: Use staging buffer pool for non-d3d11 downstream + In specific condition, this can show about 10% ~ 30% + performance gain with non-d3d11 downstream element. + Part-of: + +2022-02-05 23:08:48 +0900 Seungha Yang + + * gst-libs/gst/d3d11/gstd3d11.h: + * gst-libs/gst/d3d11/gstd3d11_fwd.h: + * gst-libs/gst/d3d11/gstd3d11stagingbufferpool.cpp: + * gst-libs/gst/d3d11/gstd3d11stagingbufferpool.h: + * gst-libs/gst/d3d11/meson.build: + d3d11: Add new buffer pool implementation for staging texture + staging buffer pool will allocate staging d3d11 texture + for upload/download optimization. By using staging buffer, + we can avoid per frame staging -> system memory copy operation. + Part-of: + +2022-02-02 00:15:34 -0300 Martin Reboredo + + * gst-libs/gst/vulkan/gstvkerror.c: + * gst-libs/gst/vulkan/gstvkerror.h: + gstvulkan: Expose gst_vulkan_result_to_string + Part-of: + +2022-02-05 17:36:41 +0300 Igor V. Kovalenko + + * meson_options.txt: + qroverlay: move to plugins that need external deps + qroverlay requires libqrencode dependency, move it next to similar plugins. + Part-of: + +2022-02-04 11:15:47 +0000 Tim-Philipp Müller + + * meson.build: + Back to development + Part-of: + === release 1.20.0 === 2022-02-03 19:53:25 +0000 Tim-Philipp Müller + * ChangeLog: * NEWS: * README: * RELEASE: diff --git a/subprojects/gst-plugins-base/ChangeLog b/subprojects/gst-plugins-base/ChangeLog index 25fdf7fe73..dbef781da9 100644 --- a/subprojects/gst-plugins-base/ChangeLog +++ b/subprojects/gst-plugins-base/ChangeLog @@ -1,7 +1,2828 @@ +2022-10-01 02:33:49 +1000 Jan Schmidt + + * 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: + +2022-10-01 04:51:21 +1000 Jan Schmidt + + * 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: + +2022-10-01 04:49:16 +1000 Jan Schmidt + + * 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: + +2022-10-01 04:47:31 +1000 Jan Schmidt + + * 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: + +2022-10-01 04:41:06 +1000 Jan Schmidt + + * 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: + +2022-10-01 04:40:09 +1000 Jan Schmidt + + * 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: + +2022-10-01 04:37:05 +1000 Jan Schmidt + + * 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: + +2022-09-30 00:10:25 +0100 Tim-Philipp Müller + + * gst-libs/gst/pbutils/descriptions.c: + * tests/check/libs/pbutils.c: + pbutils: descriptions: add meta/x-klv + Part-of: + +2022-09-30 00:07:07 +0100 Tim-Philipp Müller + + * 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: + +2022-09-29 09:39:15 +0100 James Cowgill + + * 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: + +2022-09-29 14:36:38 +0300 Sebastian Dröge + + * tests/interactive/test-effect-switch.c: + test-effect-switch: Fix some memory leaks and make effect element ownership clearer + Part-of: + +2018-03-28 17:54:15 +0200 Philipp Zabel + + * 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: + +2022-09-27 13:41:37 +0200 Edward Hervey + + * 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: + +2022-09-21 19:19:45 +0530 Nirbheek Chauhan + + * 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: + +2022-09-06 17:25:50 -0400 Thibault Saunier + + * 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: + +2022-09-12 09:46:43 -0400 Xavier Claessens + + * 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: + +2022-09-19 08:54:15 +0200 Edward Hervey + + * gst-libs/gst/video/video-converter.c: + video-converter: Fix doc + Argument names weren't correct + Part-of: + +2022-09-09 16:57:18 -0400 Thibault Saunier + + * 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: + +2022-08-29 10:20:55 -0400 Thibault Saunier + + * gst-libs/gst/gl/meson.build: + gl:meson: Minor typo fix + Part-of: + +2022-08-29 10:17:45 -0400 Thibault Saunier + + * docs/meson.build: + doc: Do not build plugins to build the doc + It is not actually necessary + Part-of: + +2022-09-07 10:36:09 -0400 Thibault Saunier + + * 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: + +2022-09-07 17:11:08 -0400 Thibault Saunier + + * gst/playback/gsturidecodebin.c: + uridecodebin: Fix some property documentation syntax + Part-of: + +2022-09-07 10:39:21 -0400 Thibault Saunier + + * 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: + +2021-03-24 14:20:18 -0500 Zebediah Figura + + * 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: + +2022-07-06 04:18:37 +0900 Seungha Yang + + * 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: + +2022-09-07 16:35:38 +1000 Matthew Waters + + * 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: + +2022-09-01 15:11:31 -0400 Thibault Saunier + + * 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: + +2022-09-01 11:51:48 -0400 Thibault Saunier + + * 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: + +2022-08-31 18:44:14 -0400 Thibault Saunier + + * meson.build: + meson: Rename plugins list and make them "dependency" objects + Part-of: + +2022-08-31 14:50:38 +0000 Ádám Balázs + + * gst/audioconvert/gstaudioconvert.c: + gstaudioconvert: doc: Fix mix-matrix example + mix-matrix should contain float elements, modify the example to do so + Part-of: + +2022-08-30 14:29:41 +0200 Rafael Caricio + + * gst-libs/gst/pbutils/gstaudiovisualizer.c: + audiovisualizer: fix buffer mapping to not increase refcount + Part-of: + +2022-08-23 19:12:17 +0300 Sebastian Dröge + + * 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: + +2022-07-22 13:41:17 +0200 Mathieu Duponchelle + + * 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: + +2022-08-23 16:02:31 +0200 Mathieu Duponchelle + + * 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: + +2022-08-17 12:53:02 +0200 Guillaume Desmottes + + * 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: + +2022-08-05 20:52:19 +0900 Seungha Yang + + * 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: + +2022-08-05 20:16:00 +0900 Seungha Yang + + * 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: + +2022-08-12 22:42:28 -0700 Khem Raj + + * 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: + +2022-08-12 13:16:50 +0300 Sebastian Dröge + + * 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: + +2022-08-12 13:15:46 +0300 Sebastian Dröge + + * tests/check/libs/rtsp.c: + rtspurl: Use fail_unless_equals_string() in tests + Part-of: + +2022-07-27 22:34:42 +1000 Jan Schmidt + + * 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: + +2022-08-09 18:06:41 +0100 Tim-Philipp Müller + + * docs/plugins/gst_plugins_cache.json: + * ext/opus/gstopusenc.c: + opusenc: improve inband-fec property documentation + Part-of: + +2022-06-30 16:14:27 +0300 Jordan Petridis + + * 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: + +2022-01-22 02:35:36 +0100 Mathieu Duponchelle + + * gst/encoding/gstsmartencoder.c: + smartencoder: fix detection of avc1 + While avc1 is the FourCC, avc is the name used in caps + Part-of: + +2022-01-22 02:29:54 +0100 Mathieu Duponchelle + + * 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: + +2022-01-21 01:02:52 +0100 Mathieu Duponchelle + + * 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: + +2022-01-21 00:57:16 +0100 Mathieu Duponchelle + + * 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: + +2022-01-21 00:49:33 +0100 Mathieu Duponchelle + + * 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: + +2022-08-01 17:25:56 +0200 Edward Hervey + + * 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: + +2022-05-25 18:40:30 +0530 Nirbheek Chauhan + + * 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: + +2022-07-13 22:37:26 +0900 Seungha Yang + + * docs/plugins/gst_plugins_cache.json: + compositor: Update plugins cache + Part-of: + +2022-01-18 21:21:23 +0900 Seungha Yang + + * 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: + +2021-11-24 20:21:52 +0900 Seungha Yang + + * 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: + +2021-11-20 00:41:52 +0900 Seungha Yang + + * gst/compositor/blend.c: + * gst/compositor/blend.h: + * gst/compositor/compositor.c: + compositor: Add support for Y444 high bitdepth formats + Part-of: + +2021-11-19 16:32:38 +0900 Seungha Yang + + * 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: + +2021-11-19 21:46:43 +0900 Seungha Yang + + * 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: + +2022-07-27 15:42:44 +1000 Matthew Waters + + * 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=, 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=) at ../subprojects/gst-rtsp-server/gst/rtsp-server/rtsp-stream-transport.c:632 + #7 0x00007ffff4278e9b in push_data (stream=0x7fff40019bf0, is_rtp=, buffer_list=0x0, buffer=, 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=, 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: + +2022-07-22 13:13:42 +0100 Tim-Philipp Müller + + * gst/audiomixer/gstaudiointerleave.c: + audiointerleave: fix property docs + Part-of: + +2022-07-23 02:49:20 +1000 Jan Schmidt + + * 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: + +2022-07-02 06:08:57 +0900 Seungha Yang + + * 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: + +2022-07-17 00:30:10 +0900 Seungha Yang + + * gst-libs/gst/video/video-converter.c: + video-converter: Use primaries compare function + Avoid conversion if both color primaries are functionally equal + Part-of: + +2022-07-16 23:36:22 +0900 Seungha Yang + + * 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: + +2022-07-12 14:47:20 +1000 Matthew Waters + + * 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: + +2022-07-07 23:40:22 +1000 Jan Schmidt + + * 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: + +2022-07-07 23:54:44 +1000 Jan Schmidt + + * 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: + +2022-07-11 20:12:30 +0200 Mathieu Duponchelle + + * 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: + +2022-07-08 20:49:21 +0200 Andoni Morales Alastruey + + * 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: + +2022-07-08 20:38:51 +0200 Andoni Morales Alastruey + + * 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: + +2022-06-14 12:22:22 +0200 Marc Leeman + + * 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: + +2022-07-04 17:27:50 +1000 Matthew Waters + + * 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: + +2022-06-30 00:39:50 +0100 Tim-Philipp Müller + + * 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: + +2022-06-30 00:31:24 +0100 Tim-Philipp Müller + + * 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: + +2022-06-30 00:13:19 +0100 Tim-Philipp Müller + + * 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: + +2022-07-01 23:57:08 +1000 Jan Schmidt + + * 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: + +2022-06-28 09:38:34 +0300 Sebastian Dröge + + * ext/gl/gstglvideomixer.c: + glvideomixer: Only consider property changes a geometry change if there as an actual change + Part-of: + +2022-06-27 21:28:07 +0300 Sebastian Dröge + + * docs/plugins/gst_plugins_cache.json: + * ext/gl/gstglvideomixer.c: + glvideomixer: Add crop-{left,right,top,bottom} pad properties for cropping inputs + Part-of: + +2022-06-30 09:02:00 +0300 Sebastian Dröge + + * 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: + +2022-06-30 12:50:17 +1000 Jan Schmidt + + * 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: + +2022-06-30 12:46:31 +1000 Jan Schmidt + + * 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: + +2022-06-30 18:41:01 +1000 Jan Schmidt + + * 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: + +2022-06-30 08:42:43 +0300 Sebastian Dröge + + * gst-libs/gst/video/video.h: + video: Include new video-sei.h in video.h + Part-of: + +2022-06-29 10:55:13 +0100 Tim-Philipp Müller + + * 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: + +2022-06-16 10:19:17 +0000 James Hilliard + + * 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: + +2022-06-25 19:50:10 +0100 Tim-Philipp Müller + + * 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: + +2022-05-13 12:57:06 -0400 Xavier Claessens + + * 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: + +2022-06-08 19:18:48 +0300 Vivia Nikolaidou + + * 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: + +2022-06-12 05:35:27 -0600 James Hilliard + + * 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: + +2022-04-06 12:56:30 +0100 Tim-Philipp Müller + + * 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: + +2022-05-16 19:29:10 +0200 Andoni Morales Alastruey + + * gst-libs/gst/video/meson.build: + video: add new video-sei.h header to the list of video_headers + Part-of: + +2022-02-27 18:41:12 +0000 Andoni Morales Alastruey + + * gst-libs/gst/video/video-sei.c: + * gst-libs/gst/video/video-sei.h: + Fix documentation + Part-of: + +2022-02-17 15:55:19 +1100 Brad Hards + + * 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: + +2022-02-17 15:55:19 +1100 Brad Hards + + * gst-libs/gst/video/video-sei.c: + h264parse: fix copying of data and UUID + Part-of: + +2021-12-19 19:14:05 +0100 Andoni Morales Alastruey + + * 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: + +2022-05-27 14:18:30 -0400 Nicolas Dufresne + + * 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: + +2022-05-25 02:10:30 +0900 Seungha Yang + + * 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: + +2022-05-23 21:24:40 -0400 Eli Schwartz + + * 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: + +2022-05-19 12:17:59 +0300 Sebastian Dröge + + * 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: + +2022-05-15 16:53:12 +0000 Thibault Saunier + + * 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: + +2022-05-13 13:31:55 +0200 Alicia Boya García + + * 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: + +2022-05-16 12:34:36 -0400 U. Artie Eoff + + * gst-libs/gst/video/gstvideoaggregator.c: + videoaggregator: unref temporary caps + The "possible_caps" needs unref after finished using to + avoid memory leak. + Part-of: + +2022-05-05 02:54:37 +0900 Seungha Yang + + * 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: + +2022-05-09 16:21:55 +1000 Matthew Waters + + * 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: + +2022-05-07 04:43:49 +0900 Seungha Yang + + * 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: + +2022-05-06 09:10:09 +0200 Edward Hervey + + * 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: + +2022-05-03 16:25:19 +0200 Edward Hervey + + * 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: + +2022-05-03 16:08:39 +0200 Edward Hervey + + * 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: + +2022-05-03 13:37:31 +0300 Sebastian Dröge + + * 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: + +2022-05-02 14:36:03 -0400 Nicolas Dufresne + + * docs/plugins/gst_plugins_cache.json: + doc: Update cache for NV12_4L4 and NV12_16LE32 gl support + Part-of: + +2022-04-14 15:02:11 -0400 Nicolas Dufresne + + * 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: + +2022-04-12 14:18:59 -0400 Nicolas Dufresne + + * 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: + +2022-04-13 14:54:40 -0400 Nicolas Dufresne + + * 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: + +2022-04-12 12:24:03 -0400 Nicolas Dufresne + + * 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: + +2022-04-12 12:16:23 -0400 Nicolas Dufresne + + * 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: + +2022-04-12 12:14:03 -0400 Nicolas Dufresne + + * 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: + +2022-04-12 12:18:06 -0400 Nicolas Dufresne + + * 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: + +2022-04-27 10:18:39 +0100 Philippe Normand + + * 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: + +2022-04-28 15:32:27 +1000 Matthew Waters + + * 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: + +2022-04-27 09:22:40 +0200 Edward Hervey + + * 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: + +2022-04-27 08:23:59 +0200 Edward Hervey + + * gst/playback/gstplaybin2.c: + playbin2: Remove dead code + blacklisted_mimes has been empty for ages. Remove the code "using" it. + Part-of: + +2022-04-21 02:04:57 +0200 Mathieu Duponchelle + + * 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 + Part-of: + +2022-04-27 02:08:00 +0200 Mathieu Duponchelle + + * 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: + +2022-04-24 23:19:00 +0800 He Junyan + + * 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: + +2022-04-26 10:58:08 +0200 Guillaume Desmottes + + * 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: + +2022-04-26 09:29:39 +0200 Edward Hervey + + * ext/ogg/gstoggstream.c: + oggdemux: Protect against invalid framerates + This check wasn't done for all mappings. + Part-of: + +2022-03-07 08:46:57 -0500 Xavier Claessens + + * gst-libs/gst/gl/meson.build: + Meson: Fix deprecation warnings + Part-of: + +2022-04-21 11:41:43 +0300 Sebastian Dröge + + * 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: + +2022-04-21 11:41:36 +0300 Sebastian Dröge + + * 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: + +2022-04-21 11:41:25 +0300 Sebastian Dröge + + * 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: + +2022-04-21 11:41:15 +0300 Sebastian Dröge + + * 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: + +2022-04-21 11:40:47 +0300 Sebastian Dröge + + * 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: + +2020-11-26 18:18:52 +0100 Mathieu Duponchelle + + * 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: + +2020-11-26 18:16:10 +0100 Mathieu Duponchelle + + * 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: + +2020-11-26 15:57:10 +0100 Mathieu Duponchelle + + * 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: + +2022-04-20 16:25:49 -0500 Olivier Crête + + * 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: + +2022-02-02 15:28:15 +0000 James Cowgill + + * tests/check/elements/videoscale.c: + videoscale: Add test for transform_meta function + Part-of: + +2022-02-02 15:28:21 +0000 James Cowgill + + * 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: + +2022-04-01 15:16:20 +0530 Nirbheek Chauhan + + * 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: + +2022-04-21 10:21:37 -0400 Thibault Saunier + + * 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: + +2022-04-14 09:48:14 -0400 Thibault Saunier + + * 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: + +2021-05-21 18:55:25 -0400 Thibault Saunier + + * 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: + +2020-04-17 15:23:03 -0400 Thibault Saunier + + * 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: + +2022-04-07 19:36:25 +0300 Sebastian Dröge + + * 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: + +2022-04-18 18:53:45 +0900 Camilo Celis Guzman + + * 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: + +2022-03-25 10:18:34 -0400 Xavier Claessens + + * 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: + +2022-03-25 10:20:24 -0400 Xavier Claessens + + * 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: + +2022-03-25 09:59:23 -0400 Xavier Claessens + + * 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: + +2022-03-25 11:21:03 -0400 Xavier Claessens + + * 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: + +2021-12-08 11:48:08 +0000 Thibault Saunier + + * 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: + +2022-04-19 11:05:05 -0400 Nicolas Dufresne + + * 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: + +2022-04-19 10:53:15 -0400 Nicolas Dufresne + + * gst-libs/gst/video/video-frame.c: + Revert "video-frame: avoid possible out of bound memory access" + This reverts commit c4255f08f787ff6a41504b538fa4c2e911d40ec7. + Part-of: + +2022-04-18 15:44:47 +0530 Nirbheek Chauhan + + * 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: + +2022-04-18 18:14:44 +0900 Camilo Celis Guzman + + * 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: + +2021-11-12 20:13:10 +0100 Ruben Gonzalez + + * 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: + +2021-05-25 14:41:51 +0200 Guillaume Desmottes + + * 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: + +2022-04-15 14:03:08 +0900 hoonhee.lee + + * gst/playback/gstplaybin3.c: + playbin3: fix missing lock when unknown stream type in pad-removed cb + Part-of: + +2022-04-14 15:21:48 +0200 Edward Hervey + + * 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: + +2022-04-14 18:44:48 +0100 Tim-Philipp Müller + + * gst-libs/gst/app/gstappsrc.c: + appsrc: fix annotations + Part-of: + +2022-04-15 19:55:34 +0300 Sebastian Dröge + + * 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: + +2022-04-14 20:10:46 +1000 Brad Hards + + * 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: + +2022-04-12 01:35:43 +0900 Seungha Yang + + * tools/meson.build: + meson: gst-play: Restore Windows high-resolution timer support + Fix regression of the commit 2952a73f4083487f33ae83407bef5245d2f8fef2 + Part-of: + +2022-04-12 01:01:23 +0900 Seungha Yang + + * 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: + +2022-04-12 15:23:08 +0300 Sebastian Dröge + + * gst-libs/gst/rtp/gstrtpbasepayload.c: + Fix `transfer` gobject-introspection annotation typos + Part-of: + +2022-04-10 10:55:02 +1000 Matthew Waters + + * 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: + +2022-04-08 11:10:49 +1000 Matthew Waters + + * 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: + +2022-04-08 01:52:32 +0200 Mathieu Duponchelle + + * gst-libs/gst/rtp/gstrtpbasepayload.c: + rtpbasepayload: fix transfer annotation for push and push_list + Part-of: + +2022-04-07 10:08:37 +0900 hoonhee.lee + + * 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: + +2022-04-06 18:08:46 +0200 Bastian Krause + + * 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 + Signed-off-by: Bastian Krause + Part-of: + +2022-04-04 10:46:24 +0530 Nirbheek Chauhan + + * 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: + +2021-01-21 16:01:38 +0800 Zhao Zhili + + * 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: + +2022-04-01 21:47:59 +0800 Haihua Hu + + * 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: + +2022-03-30 11:06:02 -0400 Xavier Claessens + + * 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: + +2022-03-25 15:00:20 -0400 Xavier Claessens + + * 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: + +2022-03-31 12:47:06 +0200 Xabier Rodriguez Calvar + + * gst-libs/gst/gl/gstglcolorconvert.c: + glcolorconvert: should copy metadatas from the incoming buffer + Part-of: + +2022-04-01 10:25:23 +0300 Sebastian Dröge + + * 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: + +2022-03-31 23:41:41 +0200 Thibault Saunier + + * 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: + +2022-03-29 17:51:13 +0200 Stéphane Cerveau + + * 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: + +2020-03-30 15:16:29 -0400 Xavier Claessens + + * 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: + +2022-03-29 22:16:14 +0900 Seungha Yang + + * 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: + +2021-09-11 12:17:56 -0300 Thibault Saunier + + * meson.build: + * tools/meson.build: + tools: Add support for building gstreamer tools against gst-full + Part-of: + +2022-03-28 18:43:27 +0200 Enrique Ocaña González + + * 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 for her work co-debugging + the issue and contributing to find a solution. + Part-of: + +2021-06-09 11:25:36 +0200 Edward Hervey + + * gst/playback/gsturisourcebin.c: + urisourcebin: When streams-aware, remove pads immediately + For the same reason we add them immediately + Part-of: + +2021-06-08 14:31:10 +0200 Edward Hervey + + * 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: + +2021-05-29 07:31:15 +0200 Edward Hervey + + * 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: + +2021-05-28 07:49:10 +0200 Edward Hervey + + * 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: + +2022-03-28 12:13:12 +0200 Edward Hervey + + * gst-libs/gst/pbutils/descriptions.c: + pbutils: Fix wmv screen detection + strncmp vs !strncmp :) + Part-of: + +2022-03-28 10:10:45 +0300 Sebastian Dröge + + * 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: + +2022-03-16 10:31:56 +0000 Corentin Damman + + * gst/rawparse/gstrawvideoparse.c: + rawvideoparse: set format from caps in gst_raw_video_parse_set_config_from_caps + Part-of: + +2022-03-27 16:35:14 +1100 Matthew Waters + + * 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: + +2022-03-25 13:00:13 +0100 Stéphane Cerveau + + * gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m: + gl: cocoa: fix warnings of unused variables + Part-of: + +2022-03-18 16:59:32 +0000 Thibault Saunier + + * 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: + +2022-03-24 13:01:52 +0100 Vivienne Watermeier + + * 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: + +2022-03-22 21:13:31 +0100 Vivienne Watermeier + + * 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: + +2022-02-03 15:01:46 +0100 Vivienne Watermeier + + * 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: + +2022-01-31 20:25:23 +0100 Vivienne Watermeier + + * 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: + +2022-02-14 16:08:23 +0100 Vivienne Watermeier + + * 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: + +2022-02-14 14:22:29 +0100 Vivienne Watermeier + + * 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: + +2022-02-14 14:06:12 +0100 Vivienne Watermeier + + * 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: + +2022-03-18 16:34:38 -0400 Nicolas Dufresne + + * docs/plugins/gst_plugins_cache.json: + doc: Update cache after NV12_8L128 addition + Part-of: + +2021-08-12 11:00:11 +0800 Ming Qian + + * 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: + +2022-03-18 13:42:27 +0530 Nirbheek Chauhan + + * 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: + +2022-03-18 20:43:24 +1100 Matthew Waters + + * 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 >&) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:809:5 + #10 0x4dea29 in fuzzer::Fuzzer::Loop(std::__Fuzzer::vector >&) /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: + +2022-01-17 16:10:37 +0100 Vivienne Watermeier + + * 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: + +2022-01-05 19:33:06 +0100 Vivienne Watermeier + + * gst/compositor/compositor.c: + * tests/check/elements/compositor.c: + compositor: send translated navigation events to the relevant sink pads + Fixes #888 + Part-of: + +2022-03-15 13:59:16 +0100 Corentin Noël + + * 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: + +2021-12-16 18:41:38 +0000 Tim-Philipp Müller + + * 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: + +2022-03-15 12:57:49 +0530 Nirbheek Chauhan + + * 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: + +2022-03-10 10:25:53 +0100 Bastien Nocera + + * 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: + +2022-03-11 18:08:14 -0500 Xavier Claessens + + * 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: + +2022-03-02 03:45:48 +1100 Jan Schmidt + + * gst/playback/gstplaybin3.c: + playbin3: Remove stale code + Remove now-unused get_stream_type_for_event() function. + Part-of: + +2022-01-21 16:23:38 +0100 Edward Hervey + + * 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: + +2022-03-09 10:15:08 +0100 Edward Hervey + + * 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: + +2022-01-21 14:52:07 +0100 Edward Hervey + + * 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: + +2022-01-18 05:48:08 +1100 Jan Schmidt + + * 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: + +2022-01-18 02:52:47 +1100 Jan Schmidt + + * 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: + +2021-11-11 03:20:23 +1100 Jan Schmidt + + * 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: + +2021-08-06 19:27:02 +1000 Jan Schmidt + + * 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: + +2022-03-08 09:46:33 +0100 Edward Hervey + + * 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: + +2022-03-09 16:02:06 +0530 Nirbheek Chauhan + + * 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: + +2021-12-14 16:14:56 +0100 Edward Hervey + + * 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: + +2021-11-17 15:30:38 +0100 Edward Hervey + + * 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: + +2022-03-02 03:43:00 +1100 Jan Schmidt + + * 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: + +2022-03-02 12:15:19 +0800 Hou Qi + + * 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: + +2022-03-04 22:21:13 +0900 Seungha Yang + + * 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: + +2022-02-24 01:41:34 +1100 Jan Schmidt + + * 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: + +2021-09-01 14:02:29 +1000 Matthew Waters + + * 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: + +2022-03-02 00:52:22 +1100 Jan Schmidt + + * gst/playback/gsturidecodebin3.c: + uridecodebin3: Remove dead variables + Leftover junk from original port + Part-of: + +2022-02-21 10:49:15 +0100 Sebastian Fricke + + * 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: + +2022-02-23 11:10:11 +0100 Sebastian Fricke + + * 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: + +2021-12-10 15:51:51 +0100 Célestin Marot + + * gst-libs/gst/video/video-info.c: + video-info: encoded format can have RGB color-matrix (Fixes #1435) + Part-of: + +2022-02-27 13:19:49 +0200 Sebastian Dröge + + * 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: + +2022-02-16 18:49:52 +0200 Sebastian Dröge + + * 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: + +2022-02-16 13:28:52 +0200 Sebastian Dröge + + * 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: + +2022-01-22 01:30:57 +1100 Jan Schmidt + + * 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: + +2022-02-24 10:09:50 +0200 Sebastian Dröge + + * 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: + +2022-02-22 15:08:48 +0100 Jan Alexander Steffens (heftig) + + * 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: + +2022-02-22 10:54:23 +0200 Sebastian Dröge + + * 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: + +2022-02-21 14:23:27 +0200 Sebastian Dröge + + * 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: + +2022-02-21 15:12:04 +0200 Sebastian Dröge + + * gst-libs/gst/gl/gstgldisplay.c: + * gst-libs/gst/gl/gstglshaderstrings.c: + gl: Add `#ifndef GST_REMOVE_DEPRECATED` for existing deprecated API + Part-of: + +2022-02-21 15:08:44 +0200 Sebastian Dröge + + * gst-libs/gst/gl/gstgldisplay.c: + gl: Add versioned `Deprecated` marker to gst_gl_display_find_window + Part-of: + +2022-02-21 15:05:55 +0200 Sebastian Dröge + + * 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: + +2022-02-21 15:02:02 +0200 Sebastian Dröge + + * gst-libs/gst/gl/gl-prelude.h: + gl: Add GST_GL_DEPRECATED + Part-of: + +2022-02-20 14:05:05 +0100 Sebastian Groß + + * 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: + +2022-02-20 15:20:07 -0500 Nicolas Dufresne + + * docs/plugins/gst_plugins_cache.json: + doc: Add NV12_16L32S into the cache + Autogenerated by CI + Part-of: + +2022-02-18 15:25:17 -0500 Nicolas Dufresne + + * 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: + +2022-01-25 14:04:13 -0500 Nicolas Dufresne + + * 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: + +2021-12-02 21:46:59 -0500 Nicolas Dufresne + + * 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: + +2022-02-19 01:58:20 +0900 Seungha Yang + + * 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: + +2021-10-28 17:09:34 -0400 Nicolas Dufresne + + * 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: + +2022-02-06 22:54:42 +0900 Seungha Yang + + * 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: + +2021-10-01 20:27:28 +0900 Seungha Yang + + * 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: + +2022-02-08 23:30:00 +0900 Seungha Yang + + * tests/examples/seek/instant-rate-change.c: + Remove some trailing white spaces + Part-of: + +2022-01-07 20:02:46 +0900 Seungha Yang + + * 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: + +2021-08-25 20:18:20 +0900 Seungha Yang + + * 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: + +2022-01-31 13:01:10 +0100 Vivienne Watermeier + + * gst-libs/gst/video/navigation.c: + * gst-libs/gst/video/navigation.h: + navigation: add more constructors for navigation events + Part-of: + +2022-02-07 09:30:58 +0100 David Svensson Fors + + * 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: + +2020-07-17 14:37:14 +1000 Jan Schmidt + + * 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 + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/10 + Part-of: + +2021-12-22 18:46:44 +0000 Thibault Saunier + + * gst-libs/gst/video/navigation.h: + navigation: Fix Since marker for mouse scroll + Part-of: + +2022-02-03 01:04:40 +0900 Seungha Yang + + * 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: + +2022-02-04 11:15:47 +0000 Tim-Philipp Müller + + * meson.build: + Back to development + Part-of: + === release 1.20.0 === 2022-02-03 19:53:25 +0000 Tim-Philipp Müller + * ChangeLog: * NEWS: * README: * RELEASE: diff --git a/subprojects/gst-plugins-good/ChangeLog b/subprojects/gst-plugins-good/ChangeLog index 5db352d7e8..d0e9ac9ad0 100644 --- a/subprojects/gst-plugins-good/ChangeLog +++ b/subprojects/gst-plugins-good/ChangeLog @@ -1,7 +1,3648 @@ +2022-07-27 11:19:50 +0200 Edward Hervey + + * gst/isomp4/qtdemux.c: + qtdemux: Don't stop task when resetting + This is a regression that was introduced in + cca2f555d14b5751f7f9d466b66127544dad5138 (yes, 9 years ago). + The only place where a demuxer streaming thread should be stopped is when the + sinkpad is deactivated from pull mode (i.e. PAUSED->READY). + Attempting to stop the task in this function would cause this to happen when a + FLUSH_STOP or STREAM_START event is received... which can cause deadlocks. + Part-of: + +2022-09-30 18:57:01 +0200 Mathieu Duponchelle + + * gst/multifile/gstsplitmuxpartreader.c: + splitmuxsrc: don't consider unlinked pads when deactivating part + If splitmuxsrc exposes multiple pads, but only one is linked, part pads + will never see an EOS event. This shouldn't prevent the part from being + eventually deactivated. + Part-of: + +2022-03-01 16:30:10 +0530 Nirbheek Chauhan + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: Fix usage of IPv6 connections in SETUP + If the SETUP request returns an IPv6 server address in the Transport + field, we would generate an incorrect URI, and multiudpsink would fail + to initialize: + ``` + rtspsrc gstrtspsrc.c:9780:dump_key_value: key: 'Transport', value: 'RTP/AVP;unicast;source=fe80::dc27:25ff:fe5e:bd13:8080;client_port=62696-62697;server_port=4000-4001' + ... + rtspsrc gstrtspsrc.c:4595:gst_rtspsrc_stream_configure_udp_sinks: configure RTP UDP sink for fe80::dc27:25ff:fe5e:bd13:8080:4000 + ... + multiudpsink gstmultiudpsink.c:1229:gst_multiudpsink_configure_client: error: Invalid address family (got 23) + ``` + We can't look at stream->is_ipv6 because we can't rely on the server + returning the right value there. In the issue reported about this, + server reported itself as `KuP RTSP Server/0.1`, and the SDP was: + ``` + c=IN IP4 + m=video 54608 RTP/AVP 96 + a=rtpmap:96 H264/90000 + ``` + So we need to parse the string value and figure out the family + ourselves. + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1058 + Part-of: + +2022-09-27 13:56:54 +0100 Tim-Philipp Müller + + * gst/isomp4/qtdemux.c: + qtdemux: guard against timestamp calculation overflow in gap event loop + Could possibly cause an endless loop. + Fixes #1400. + Part-of: + +2022-09-27 00:08:41 +1000 Jan Schmidt + + * tests/check/elements/dash_mpd.c: + dashdemux2: fix mpd unit test expectations + Update unit test for some mpd cases that were reporting + timestamps including the period start time, while + dashdemux2 expects that it needs to add the period + start time itself. + Fix the tests to not expect the period start time + to be included. + Part-of: + +2022-08-23 23:12:44 +0900 Junsoo Park + + * ext/adaptivedemux2/dash/gstmpdclient.c: + dashdemux2: Set timestamp relative to period start + These values will be referred to as timestamp relative to period start + so need to subtract period start time from the values. + Fixes a problem with determining the start position when playing Live content + with SegmentTimeline, presentationTimeOffset and a non-0 period start time. + Part-of: + +2022-09-22 19:02:10 +0200 Jakub Adam + + * ext/vpx/gstvp9dec.c: + * ext/vpx/gstvp9enc.c: + vp9: check if libvpx supports high bit depth + Detect at runtime if libvpx is compiled with --enable-vp9-highbitdepth + and enable 10bit video formats in element caps accordingly. + Part-of: + +2022-09-21 19:19:45 +0530 Nirbheek Chauhan + + * 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: + +2022-09-21 00:26:38 +0900 Seungha Yang + + * ext/adaptivedemux2/gstadaptivedemuxutils.c: + adaptivedemux2: Always wake up loop thread on unpause + Otherwise loop thread will sleep forever because + GstAdaptiveDemuxLoop.paused flag update is not signalled + when loop was marked as stopped already from other thread. + Part-of: + +2022-09-16 02:01:58 +1000 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemux-period.c: + * ext/adaptivedemux2/gstadaptivedemux-private.h: + * ext/adaptivedemux2/gstadaptivedemux-stream.c: + * ext/adaptivedemux2/gstadaptivedemux-track.c: + * ext/adaptivedemux2/gstadaptivedemux.c: + * ext/adaptivedemux2/gstadaptivedemux.h: + adaptivedemux2: Rework input download wakeups + Change the way streams are woken up to download more data. + Instead of checking the level on tracks that are being + output as data is dequeued, calculate a 'wakeup time' + at which it should download more data, and wake up + the stream when the global output position crosses + that threshold. + For efficiency, compute the earliest wakeup time + for all streams and store it on the period, so the + output loop can quickly check only a single value + to decide if something needs waking up. + Does the same buffering as the previous method, + but ensures that as we approach the end of + one period, the next period continues incrementally + downloading data so that it is fully buffered when + the period starts. + Fixes issues with multi-period VOD content where + download of the second period resumes only after + the first period is completely drained. + Part-of: + +2022-09-15 09:04:10 +0200 Edward Hervey + + * ext/adaptivedemux2/hls/gsthlsdemux.c: + hlsdemux2: Handle negative time mappings + Some servers can return playlists with "old" media playlists and different + Discont Sequence. + In those cases, the segment stream times would be negative when creating a new + time mapping. In order to properly handle such scenarios, shift the values to + stored accordingly to end up with non-negative reference stream time. + Part-of: + +2022-09-19 20:48:01 +0300 Mart Raudsepp + + * ext/shout2/meson.build: + shout: fix minimum requirement to libshout >= 2.4.3 + commit e64c6f0b93ced added usage of the SHOUT_USAGE_UNKNOWN symbol, but this + became available in the Icecast-libshout 2.4.3 release, not 2.4.2 + Part-of: + +2022-08-31 11:13:06 +0800 Elliot Chen + + * sys/v4l2/gstv4l2videodec.c: + v4l2videodec: add cap negotiation fail check in the capture configuration change + The capture configuration change may cause negotiation fail. + Need to check it to avoid enter the endless loop. + Part-of: + +2022-08-29 10:17:45 -0400 Thibault Saunier + + * docs/meson.build: + doc: Do not build plugins to build the doc + It is not actually necessary + Part-of: + +2022-09-15 12:14:56 +0100 Tim-Philipp Müller + + * tests/check/meson.build: + tests: add a few more orc tests + Part-of: + +2022-09-14 10:15:41 +0200 Edward Hervey + + * ext/adaptivedemux2/hls/m3u8.c: + hlsdemux2: Fix crash on live playlist with single entry + If there is a single entry, we would end up computing a minimum distance of 0, + and would therefore read entries from after the segment array + Part-of: + +2021-03-24 14:20:18 -0500 Zebediah Figura + + * 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: + +2022-09-13 00:56:53 +1000 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemux.c: + adaptivedemux2: Always check bitrate in live + When advancing fragment in live, it's normal to return + GST_FLOW_EOS when playing at the live edge of the available + fragments. In that case, we still want to adjust bitrate + dynamically. + Fixes issue with dashdemux2 where the current bitrate of + each adaptation set is changed to the lowest one when + updating the mpd for a live stream. + Part-of: + +2022-09-12 14:18:47 -0400 Matt Crane + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: Fix calculation of reference timestamp metadata + Add support for RTCP SRs that contain RTP timestamps later than the + current timestamps in the RTP stream packet buffers. + Part-of: + +2022-09-08 17:06:26 +0000 Filip Hanes + + * docs/gst_plugins_cache.json: + * ext/libpng/gstpngenc.c: + pngenc: lower minimum width and height to 1x1 + Part-of: + +2022-08-30 11:45:05 +0200 Edward Hervey + + * ext/adaptivedemux2/dash/gstxmlhelper.c: + * tests/check/elements/dash_mpd.c: + dashdemux2: Remove bogus limitation checks for duration fields + Just like for the seconds field, there are no limitations on the hours and + minutes fields. The specification for xml schema duration fields doesn't forbid + specifying durations with only (huge) minutes or hours values. + Part-of: + +2022-08-21 03:37:40 +1000 Jan Schmidt + + * ext/adaptivedemux2/dash/gstdashdemux.c: + * ext/adaptivedemux2/dash/gstdashdemux.h: + * ext/adaptivedemux2/dash/gstmpdclient.c: + * ext/adaptivedemux2/dash/gstmpdclient.h: + dashdemux2: Preserve current representation on live manifest updates + When updating a manifest during live playback, preserve the current + representation for each stream. + During update_fragment_info, if the current representation changed + because it couldn't be matched, trigger a caps change and new + header download. + This reverts commit e0e1db212fd0df2239583b9099fc4361adeded05 + and reapplies "dashdemux: Fix issue when manifest update sets slow start + without passing necessary header & caps changes downstream" with + changes. + Part-of: + +2022-09-02 17:21:43 +0300 Sebastian Dröge + + * tests/check/elements/rtpjitterbuffer.c: + rtpjitterbuffer: Add test for crash caused by removing timers twice + Part-of: + +2022-09-02 12:20:58 +0300 Sebastian Dröge + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: Make it more explicit that update_rtx_timers() takes ownership of the passed in timer + It is not valid anymore afterwards and must not be used, otherwise an + already freed pointer might be used. + Part-of: + +2022-09-02 12:20:30 +0300 Sebastian Dröge + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: Don't shadow variable + While this didn't cause any problems in this context it is simply + confusing. + Part-of: + +2022-09-02 12:19:26 +0300 Sebastian Dröge + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: Change RTX timer availability checks to assertions + It's impossible to end up in the corresponding code without a timer for + RTX packets because otherwise it would be an unsolicited RTX packet and + we would've already returned early. + Part-of: + +2022-09-02 12:17:39 +0300 Sebastian Dröge + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: Only unschedule timers for late packets if they're not RTX packets and only once + Timers for RTX packets are dealt with later in update_rtx_timers(), and + timers for non-RTX packets would potentially also be unscheduled a + second time from there so avoid that. + Also don't shadow the timer variable from the outer scope but instead + make use of it directly. + Part-of: + +2022-07-05 16:15:19 +0200 Patricia Muscalu + + * gst/rtp/gstrtph265pay.c: + * gst/rtp/gstrtph265pay.h: + * tests/check/elements/rtph265.c: + rtph265: keep delta unit flag + Without this patch all buffers that pass the payloader + are marked as non-delta-unit buffers. + Part-of: + +2022-09-01 15:11:31 -0400 Thibault Saunier + + * ext/aalib/meson.build: + * ext/cairo/meson.build: + * ext/dv/meson.build: + * ext/flac/meson.build: + * ext/gdk_pixbuf/meson.build: + * ext/gtk/meson.build: + * ext/jack/meson.build: + * ext/jpeg/meson.build: + * ext/lame/meson.build: + * ext/libpng/meson.build: + * ext/mpg123/meson.build: + * ext/pulse/meson.build: + * ext/qt/meson.build: + * ext/shout2/meson.build: + * ext/speex/meson.build: + * ext/taglib/meson.build: + * ext/twolame/meson.build: + * ext/vpx/meson.build: + * ext/wavpack/meson.build: + * gst/alpha/meson.build: + * gst/apetag/meson.build: + * gst/audiofx/meson.build: + * gst/audioparsers/meson.build: + * gst/auparse/meson.build: + * gst/autodetect/meson.build: + * gst/avi/meson.build: + * gst/cutter/meson.build: + * gst/debugutils/meson.build: + * gst/deinterlace/meson.build: + * gst/dtmf/meson.build: + * gst/effectv/meson.build: + * gst/equalizer/meson.build: + * gst/flv/meson.build: + * gst/flx/meson.build: + * gst/goom/meson.build: + * gst/goom2k1/meson.build: + * gst/icydemux/meson.build: + * gst/id3demux/meson.build: + * gst/imagefreeze/meson.build: + * gst/interleave/meson.build: + * gst/isomp4/meson.build: + * gst/law/meson.build: + * gst/level/meson.build: + * gst/matroska/meson.build: + * gst/monoscope/meson.build: + * gst/multifile/meson.build: + * gst/multipart/meson.build: + * gst/replaygain/meson.build: + * gst/rtp/meson.build: + * gst/rtpmanager/meson.build: + * gst/rtsp/meson.build: + * gst/shapewipe/meson.build: + * gst/smpte/meson.build: + * gst/spectrum/meson.build: + * gst/udp/meson.build: + * gst/videobox/meson.build: + * gst/videocrop/meson.build: + * gst/videofilter/meson.build: + * gst/videomixer/meson.build: + * gst/wavenc/meson.build: + * gst/wavparse/meson.build: + * gst/y4m/meson.build: + * meson.build: + * sys/directsound/meson.build: + * sys/osxaudio/meson.build: + * sys/osxvideo/meson.build: + * sys/rpicamsrc/meson.build: + * sys/v4l2/meson.build: + * sys/waveform/meson.build: + * sys/ximage/meson.build: + meson: Call pkgconfig.generate in the loop where we declare plugins dependencies + Removing some copy pasted code + Part-of: + +2022-09-01 11:51:48 -0400 Thibault Saunier + + * docs/meson.build: + meson: Namespace the plugins_doc_dep/libraries variables + Part-of: + +2022-08-31 18:44:14 -0400 Thibault Saunier + + * meson.build: + meson: Rename plugins list and make them "dependency" objects + Part-of: + +2022-08-18 17:08:51 +0300 Raul Tambre + + * gst/rtpmanager/gstrtpjitterbuffer.c: + * tests/check/elements/rtpjitterbuffer.c: + rtpjitterbuffer: remove lost timer for out of order packets + When receiving old packets remove the running lost timer if present. + This fixes incorrect reporting of a lost packet even if it arrived in time. + Part-of: + +2022-08-26 18:42:44 +0300 Sebastian Dröge + + * gst/rtp/gstrtpvp8depay.c: + rtpvp8depay: If configured to wait for keyframes after packet loss, also do that if incomplete frames are detected + This can happen if the data inside the packets is incomplete without the + seqnums being discontinuous because of ULPFEC being used. + Part-of: + +2022-05-31 15:18:03 +0200 Stéphane Cerveau + + * docs/meson.build: + * meson.build: + docs: disable in static build + Following gst-plugins-base, disable docs if static_build + in: + - gstreamer + - gst-plugins-good + - gst-plugins-ugly + - gst-libav + - gstreamer-vaapi + Part-of: + +2022-08-24 17:30:34 +0800 Jianhui Dai + + * sys/v4l2/gstv4l2allocator.c: + v4l2allocator: Fix invalid imported dmabuf fd + Fix a typo that set userptr to dmabuf fd. It leads to failure of + dmabuf-import io-mode. + Part-of: + +2022-07-22 13:41:17 +0200 Mathieu Duponchelle + + * gst/isomp4/qtdemux.c: + playback: add onvif metadata caps to raw caps + + remove encoding from x-onvif-metadata caps output by qtdemux + Part-of: + +2022-08-23 10:28:30 +0000 zhiyuan.liu + + * gst/isomp4/gstisoff.c: + isoff: Fix earliest pts field parse issue + earliest pts will be covered by first_offset field on version 0 case. + Part-of: + +2022-08-18 16:36:45 +0200 Jan Alexander Steffens (heftig) + + * ext/adaptivedemux2/downloadhelper.c: + adaptivedemux2: Fix download helper with libsoup 3.0.x + libsoup 3.0.x dispatches using a single source attached when the session + is created, so we need to create the session with the same context that + our download thread is later using. + 2.74 or 3.1 will dispatch a response using the context which sent the + request. However, for any context other than the one that created the + session, this will also create and destroy sources, so there's still + some slight performance benefit. + Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1384 + Part-of: + +2022-08-18 09:48:15 +1000 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemux.c: + adaptivedemux2: Implement send_event() vfunc + Handle select-streams and seek events in an element + level send_event() vfunc, so they can be received + before any source pads are created. + This allows preferred streams to be selected before + segment downloading starts. + Part-of: + +2022-08-17 09:11:52 +1000 Jan Schmidt + + * gst/multifile/gstsplitmuxsrc.c: + splitmuxsrc: Stop pad task before cleanup + When stopping the element, make sure the pad task + is stopped before destroying the part readers. + Closes a race where the pad task might access + a freed pointer. + Also add a guard against this sort of thing + by holding a ref to the reader in the pad loop. + Part-of: + +2022-08-12 20:20:43 +1000 Jan Schmidt + + * gst/isomp4/qtdemux.c: + qtdemux: Avoid crash on reconfiguring. + When reconfiguring a stream that never created + an output pad, don't access a NULL GstPad pointer. + Part-of: + +2022-08-16 19:01:19 +0300 Sebastian Dröge + + * gst/isomp4/qtdemux.c: + qtdemux: Set parsed=true on ONVIF Timed Metadata caps + Inside MP4 the metadata must be properly parsed into frames and in + order. + Part-of: + +2022-08-15 14:30:50 -0400 Nicolas Dufresne + + * sys/v4l2/gstv4l2bufferpool.c: + v4l2bufferpool: Fix debug trace + The tracing of the buffer pointer was done on the secondary pointer, which + does not match with other traces of the same buffer. This made the trace + confusing and less useful. + Fixes #1379 + Part-of: + +2022-08-12 21:57:25 +1000 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemux-stream.c: + * ext/adaptivedemux2/gstadaptivedemux.c: + adaptivedemux2: Fix for period switching in live streams + When playing live, it's possible that one stream reaches + the end of the available playback window and goes to sleep + waiting for a manifest update, and the manifest update + introduces a new period. In that case, the sleeping + stream needs to wake up and go 'properly' EOS before we + can advance the input to the new period. + Accordingly, make sure that a stream's last_ret value + is not marked as EOS if it's just sleeping waiting for a live + manifest update. + Also fix the output loop to go back and re-check if it's + time to switch to the next period after dequeuing and + discarding an EOS event. + https://livesim.dashif.org/livesim/periods_20/testpic_2s/Manifest.mpd + Part-of: + +2022-08-11 09:34:58 +0900 Hosang Lee + + * ext/adaptivedemux2/mss/gstmssdemux.c: + mssdemux2: Use gsturi structure to form fragment urls + Utilize gsturi to form fragment url paths. + A token query may contain the string "manifest" and this would lead + to improper url creations. + Part-of: + +2022-08-12 13:20:01 +0300 Sebastian Dröge + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: Consider the actual control base URI also in case the connection URI contains a query string + That is, get rid of unnecessary and wrong special-casing. + This could always use gst_rtsp_url_get_request_uri_with_control() but as + we only have the control base URI as string it is easier to just call + gst_uri_join_strings(). + Part-of: + +2022-08-11 18:37:18 +0300 Sebastian Dröge + + * gst/isomp4/fourcc.h: + * gst/isomp4/qtdemux.c: + * gst/isomp4/qtdemux.h: + * gst/isomp4/qtdemux_types.c: + qtdemux: Add reference timestamp meta with UTC times based on the ONVIF Export File Format CorrectStartTime box to outgoing buffers + Part-of: + +2022-08-11 05:17:05 +1000 Jan Schmidt + + * ext/adaptivedemux2/hls/gsthlsdemux.c: + hlsdemux2: Fix reference leak of variant stream + When switching back to the previous variant stream + in gst_hls_demux_change_playlist(), fix a couple of + paths that would leak a reference to the previous + variant. + Part-of: + +2022-08-11 05:07:10 +1000 Jan Schmidt + + * ext/adaptivedemux2/hls/gsthlsdemux.c: + hlsdemux2: Don't leak the datetime in time map structs + Add a function to clean up GstHLSTimeMap structs + and free the ref on the optional associated GDateTime + Part-of: + +2022-08-11 05:03:10 +1000 Jan Schmidt + + * ext/adaptivedemux2/hls/gsthlsdemux.c: + hlsdemux2: Fix typefind leak and invalid memory access + When typefinding aggregates incoming data to a pending + typefind buffer and then succeeds in typefinding, it + leaks the aggregated buffer, and leaves the caller + accessing an unreffed buffer. + Part-of: + +2022-08-11 05:36:15 +1000 Jan Schmidt + + * ext/adaptivedemux2/hls/m3u8.c: + hlsdemux2: m3u8: Fix memory leaks on parsing + Fix memory leaks when parsing of an m3u8 file is + incomplete, with EXTINF or EXT-X-PROGRAM-DATE-TIME + directives, but no segment url. + Part-of: + +2022-08-11 00:59:50 +1000 Jan Schmidt + + * ext/adaptivedemux2/hls/m3u8.c: + hlsdemux2: m3u8: Fix memory leak + Clear the GValue holding intermediate GstStructure field + data. + Part-of: + +2022-08-11 01:01:07 +1000 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemuxutils.c: + adaptivedemux2: Fix uninitialised memory usage in debug + Fix printing uninitialised memory by clearing the + GstAdaptiveDemuxClock structure when allocating. + Part-of: + +2022-08-12 02:20:40 +0530 Nirbheek Chauhan + + * gst/rtpmanager/gstrtpst2022-1-fecenc.c: + rtpst2022-1-fecenc: Drain column packets on EOS + Otherwise we won't send the protection packets for the last few + packets when a stream ends. + Also send EOS on the FEC src row pad immediately, and on the FEC src + column pad after draining is complete. This makes it so that the FEC + src pads on rtpbin behave the same way as the RTCP src pads on rtpbin + when EOS is received on the send_rtp_sink pad. + Part-of: + +2022-08-11 08:48:08 +0200 Edward Hervey + + * gst/isomp4/qtdemux.c: + qtdemux: Don't use invalid values from failed trex parsing + If parsing the fragment default values (`trex` atom) failed, don't try to + compute a bogus sample_description_id value. + Fixes #1369 + Part-of: + +2022-08-09 09:42:23 +0200 Piotr Brzeziński + + * docs/gst_plugins_cache.json: + * gst/videofilter/gstvideoflip.c: + videoflip: Add support for 10/12bit planar formats + Implements support for I420, I422 and Y444 in 10/12 bit LE/BE variants. + I422 is handled separately from the rest, as it needs to consider + the endianness of the current format during most transforms. + Part-of: + +2022-08-04 18:09:52 +0800 Haihua Hu + + * gst/alpha/gstalpha.c: + alpha: fix stride issue when out buffer has padding on right + if outbuf has padding on right, need jump to next line use stride, + otherwise downstream element will show a wrong picture when use the + same stride + Part-of: + +2022-08-09 00:12:58 +1000 Jan Schmidt + + * ext/adaptivedemux2/hls/gsthlsdemux.c: + hlsdemux2: Requeue header buffer when restarting fragment + When returning GST_ADAPTIVE_DEMUX_FLOW_RESTART_FRAGMENT + for the first segment data, we might need to requeue the + header. + This was leading to occasional prerolling stalls on + HLS live streams with renditions. + Part-of: + +2022-08-07 20:56:49 +1000 Jan Schmidt + + * ext/adaptivedemux2/hls/gsthlsdemux.c: + hlsdemux2: Fix buffer leak when resynching + Unref the buffer in gst_hls_demux_handle_buffer() when + returning GST_ADAPTIVE_DEMUX_FLOW_LOST_SYNC + Part-of: + +2022-08-04 23:54:27 +1000 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemuxutils.c: + adaptivedemux2: Fix a small race on shutdown + Make sure gst_adaptive_demux_loop_cancel_call() + never tries to operate on an invalidated main context. Make + sure to clear the main context pointer while holding the lock, + and to check it in gst_adaptive_demux_loop_cancel_call() + Part-of: + +2022-07-22 03:32:39 +1000 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemux-stream.c: + adaptivedemux2-stream: Silence a compiler warning + Part-of: + +2022-07-28 04:17:26 +1000 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemux-private.h: + adaptivedemux2: Move internal FLOW_SWITCH return value. + Move the internal-only FLOW_SWITCH custom return value + to GST_FLOW_CUSTOM_SUCCESS+2 to avoid collision with + GST_ADAPTIVE_DEMUX_FLOW_LOST_SYNC + Part-of: + +2022-07-20 10:57:41 +0200 Edward Hervey + + * ext/adaptivedemux2/gstadaptivedemux.h: + adaptivedemux2: Modify custom sync loss flow return + Make it a custom sucess and not an error + Part-of: + +2022-07-12 10:44:51 +0200 Edward Hervey + + * ext/adaptivedemux2/hls/m3u8.c: + hlsdemux2: Always check DSN if required + We don't want to consider the candidate as being before the playlist if the DSN + don't match + Part-of: + +2022-07-11 10:31:42 +0200 Edward Hervey + + * ext/adaptivedemux2/gstadaptivedemux-stream.c: + * ext/adaptivedemux2/hls/gsthlsdemux.c: + adaptivedemux2/hlsdemux2: Handle loss of sync when dowloading. + Media playlist updates and fragment downloads happen in an interleaved + fashion. When a media playlist update fails *while* a segment is being + downloaded, this means we lost synchronization. + Properly propagate and handle this + Part-of: + +2022-07-08 10:48:05 +0200 Edward Hervey + + * ext/adaptivedemux2/hls/gsthlsdemux.c: + hlsdemux2: Fix initial playlist setup. + There is now only a single case where we setup the initial playlist to 0, which + is for the very first variant stream. + Rendition streams will have the initial playlist "synchronized" against the + variant stream media playlist. + Part-of: + +2022-07-08 10:44:51 +0200 Edward Hervey + + * ext/adaptivedemux2/hls/gsthlsdemux.c: + hlsdemux2: Handle loss of synchronization in live + Loss of synchronization happens when the updated media playlist has no + relationship to the previous ones. This could happen because of network issues, + server issues, etc... + When this happens, we take no chance and "reset" ourselves so that we can "seek + back to live" against the new updated playlists. + Since this happens at the "media playlist update" level, make sure the custom + flow return is propagated up. + Part-of: + +2022-07-08 10:40:33 +0200 Edward Hervey + + * ext/adaptivedemux2/gstadaptivedemux-stream.c: + * ext/adaptivedemux2/gstadaptivedemux.c: + adaptivedemux2: Handle synchronously to lost sync + We are already in the main scheduler thread, therefore we can do the "seek back + to live" directly. This also avoids other pending actions to take place. + Also handle the loss of sync when doing manifest updates. + Part-of: + +2022-07-06 11:44:57 +0200 Edward Hervey + + * ext/adaptivedemux2/hls/gsthlsdemux.c: + hlsdemux2: Prune time maps when possible + Add a new method to prune unused time mappings (i.e. which aren't used by any + current media playlist). + Do that when doing flushing seeks. Could be used in other places later too. + Part-of: + +2022-06-13 15:26:22 +0200 Edward Hervey + + * ext/adaptivedemux2/hls/m3u8.c: + hlsdemux2: Allow DSN mismatches when re-syncing playlists + Some providers provide completely incompatible DSN across bitrates/renditions, + but do keep MSN consistent. + If we fail to synchronize playlist with DSN, retry without the DSN taken into + account. + Part-of: + +2022-07-12 01:58:30 +1000 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemux.c: + adaptivedemux2: Fixes for period switching in the output loop + Close some race conditions in switching to the next period, + by ensuring the tracks are completely drained first and by + not outputting EOS events to the output source pad + if there is another period pending. + Fixes Manifest_MultiPeriod_1080p.mpd some more. + Part-of: + +2022-07-12 01:55:54 +1000 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemux-stream.c: + adaptivedemux2: stream: Set period has_next_period flag before EOS + Before sending EOS, update the period's has_next_period + flag and/or create the next period. This closes a race + where the output loop might receive the EOS event + and either push it downstream (causing premature EOS), + or receive it and try and switch to the next period + before that period is completely set up. + Part-of: + +2022-07-12 01:24:31 +1000 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemux.c: + * ext/adaptivedemux2/gstadaptivedemux.h: + adaptivedemux2: period: Rename 'closed' flag to 'has_next_period' + The flag is used to tell the output loop that a + next period is present, since the output loop + can't call the gst_adaptive_demux_has_next_period() + method. + Part-of: + +2022-07-01 02:07:05 +1000 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemux.c: + adaptivedemux2: Recheck for a pending track on drain + When a track is completely drained and EOS, but + there's a pending track on the slot loop again + to switch to that track. + Part-of: + +2022-07-01 02:05:36 +1000 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemux-period.c: + adaptivedemux2: Check stream selected instead of state + When combining stream flows, ignore streams that + are not selected, instead of checking whether + the stream state has changed yet. + Fixes another issue with dashdemux2 where it fails to + change to the next period when playing content with + several video, audio and text streams, as with + Manifest_MultiPeriod_1080p.mpd when seeking to 730 + just before the end of the first period. + Part-of: + +2022-05-25 18:40:30 +0530 Nirbheek Chauhan + + * gst/rtsp/gstrtspsrc.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: + +2022-07-22 14:51:11 +0200 Mark Nauwelaerts + + * gst/videobox/gstvideobox.c: + videobox: avoid dropping caps fields for passthrough caps transform + Fixes potential negotiation failure in case downstream element + is a bit picky regarding the fields in question. + Part-of: + +2022-07-27 15:44:09 +0200 Adrian Fiergolski + + * gst/videofilter/gstvideoflip.c: + videoflip: Fix caps negotiation when method is selected + The caps negotiation should respect the selected method to the test pipeline below works properly. + gst-launch-1.0 videotestsrc ! video/x-raw,width=320,height=600 ! videoflip method=clockwise ! video/x-raw,width=600,height=320 ! fakesink + Signed-off-by: Adrian Fiergolski + Part-of: + +2022-07-24 23:44:10 -0400 fduncanh + + * sys/v4l2/gstv4l2object.c: + v4l2object.c: add support for Apple's full-range bt709 colorspace variant + Part-of: + +2022-07-08 18:22:58 +0800 Elliot Chen + + * sys/v4l2/gstv4l2bufferpool.c: + v4l2: fix the critical log when unreference the buffer with no data + In the trick mode, driver may queue a valid buffer follow by an + empty buffer which has no valid data to indicate EOS.For the empty + buffer whose memory is multi-plane, need to resize it before + unreference it. + Part-of: + +2022-07-15 13:22:14 +0300 Sebastian Dröge + + * ext/qt/qtglrenderer.cc: + qt: Fix another instance of Qt/GStreamer both defining `GLsync` differently + In file included from ../gstreamer1.0-plugins-good/1.20.3-r0/recipe-sysroot/usr/include/gstreamer-1.0/gst/gl/gstglfuncs.h:87, + from ../gst-plugins-good-1.20.3/ext/qt/qtglrenderer.cc:14: + ../gstreamer1.0-plugins-good/1.20.3-r0/recipe-sysroot/usr/include/gstreamer-1.0/gst/gl/glprototypes/gstgl_compat.h:40:18: error: conflicting declaration 'typedef void* GLsync' + 40 | typedef gpointer GLsync; + | ^~~~~~ + In file included from ../gstreamer1.0-plugins-good/1.20.3-r0/recipe-sysroot/usr/include/QtGui/qopengl.h:127, + from ../gstreamer1.0-plugins-good/1.20.3-r0/recipe-sysroot/usr/include/QtQuick/qsggeometry.h:44, + from ../gstreamer1.0-plugins-good/1.20.3-r0/recipe-sysroot/usr/include/QtQuick/qsgnode.h:43, + from ../gstreamer1.0-plugins-good/1.20.3-r0/recipe-sysroot/usr/include/QtQuick/qsgrendererinterface.h:43, + from ../gstreamer1.0-plugins-good/1.20.3-r0/recipe-sysroot/usr/include/QtQuick/qquickwindow.h:44, + from ../gstreamer1.0-plugins-good/1.20.3-r0/recipe-sysroot/usr/include/QtQuick/QQuickWindow:1, + from ../gst-plugins-good-1.20.3/ext/qt/qtglrenderer.cc:6: + ../gstreamer1.0-plugins-good/1.20.3-r0/recipe-sysroot/usr/include/QtGui/qopengles2ext.h:24:26: note: previous declaration as 'typedef struct __GLsync* GLsync' + 24 | typedef struct __GLsync *GLsync; + | ^~~~~~ + Part-of: + +2022-07-15 06:40:05 +0530 Nirbheek Chauhan + + * sys/osxaudio/gstosxaudiodeviceprovider.c: + * sys/osxaudio/gstosxcoreaudiohal.c: + osxaudio: Fix deprecation in macOS 12.0 + kAudioObjectPropertyElementMaster has been renamed to + kAudioObjectPropertyElementMain + Part-of: + +2022-07-12 21:19:35 +1000 Jan Schmidt + + * gst/multifile/gstsplitmuxsink.c: + splitmuxsink: Fix memory leak + Fix a leak of the buffer info struct when reaching + EOS without data on the reference input. + Part-of: + +2022-06-24 13:32:34 +0300 Sebastian Dröge + + * gst/rtpmanager/rtpjitterbuffer.c: + rtpjitterbuffer: Fix calculation of RFC7273 RTP time period start + This has to be based directly on the current estimated clock time and + has to allow for negative period starts. + Part-of: + +2022-04-14 01:19:51 +0900 Seungha Yang + + * gst/multifile/gstsplitmuxsink.c: + * tests/check/elements/splitmuxsink.c: + splitmuxsink: Don't crash on EOS without buffer + Fix a case where upstream pushed EOS without buffers. + Part-of: + +2022-06-30 15:15:22 +0000 Thibault Saunier + + * gst/rtpmanager/gstrtprtxreceive.c: + * gst/rtpmanager/gstrtprtxsend.c: + * tests/check/elements/rtprtx.c: + rtprtx: Fix copying extension headers + There was a typo leading to reading memory from the buffer we were + writing to. + Part-of: + +2022-05-28 15:04:10 -0400 fduncanh + + * sys/v4l2/gstv4l2videodec.c: + v4l2videodec: replace multiple decoder bug warnings with single one + Achieve this by dropping frames after a drain if the driver failed to so. + This works around RaspberryPi driver issue [1]. + [1] https://github.com/raspberrypi/linux/issues/5059#issuecomment- + Fixes #1103 + Part-of: + +2022-06-25 19:23:11 +0100 Tim-Philipp Müller + + * tests/check/elements/udpsink.c: + tests: udpsink: make test work in environments without IPv6 + Part-fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/939 + Part-of: + +2022-05-28 16:47:42 -0400 fduncanh + + * sys/v4l2/gstv4l2videodec.c: + v4l2videodec: replace multiple decoder bug warnings by a single warning (warning due to incorrectly dropped frames at initial caps adjustment) + Part-of: + +2022-06-29 00:51:28 +1000 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemux-period.c: + adaptivedemux2: Ignore stopped stream flow state + When calculating the combined stream flow state + for a period, don't consider stopped streams. + Fixes switching to the next period in DASH streams + with multiple video/audio/subtitle streams. + Part-of: + +2022-06-29 01:25:41 +1000 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemux-stream.c: + adaptivedemux2: Clean up stream parsebins on finalize + Remove the parsebin for a stream from the overall + bin when cleaning up the stream, to avoid + keeping around old ones when moving between periods + Part-of: + +2022-06-24 02:54:22 +1000 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemux.c: + * ext/adaptivedemux2/gstadaptivedemuxutils.c: + adaptivedemux2: Fix memory leaks and use-after-free + Fix various small memory leaks, and an invalid + access to GstEvent after giving away the ref + via gst_pad_push_event() + Part-of: + +2022-06-24 02:57:54 +1000 Jan Schmidt + + * ext/adaptivedemux2/hls/gsthlsdemux-util.c: + hlsdemux2: Fix potential segfault + Fix a potential segfault if we receive a ISO-FF stream + with moof before moov. + Part-of: + +2022-06-24 02:57:03 +1000 Jan Schmidt + + * ext/adaptivedemux2/hls/gsthlsdemux.c: + * ext/adaptivedemux2/hls/m3u8.c: + hlsdemux2: Fix memory leaks + Clean up various memory leaks + Part-of: + +2022-06-23 19:24:03 +1000 Jan Schmidt + + * ext/adaptivedemux2/hls/gsthlsdemux.c: + hlsdemux2: Free current_segment on finalize + Avoid a memory leak by making sure to release the + current segment on exit if non-NULL + Part-of: + +2022-06-29 10:55:13 +0100 Tim-Philipp Müller + + * 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: + +2022-06-22 03:35:03 +1000 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemux-track.c: + adaptivedemux2: track: Fix buffering time calc before output + Use the lowest track input time as the output + time when calculating track buffering levels + before anything has been dequeued. + Fixes multi-period DASH not advancing to the + next period in some cases. + Part-of: + +2022-06-22 03:34:19 +1000 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemux-period.c: + * ext/adaptivedemux2/gstadaptivedemux-track.c: + * ext/adaptivedemux2/gstadaptivedemux.c: + * ext/adaptivedemux2/gstadaptivedemux.h: + adaptivedemux2: track: Add period number to most debug statements + Store the period number the track belongs to, and + add it in various debug statements + Part-of: + +2022-06-22 03:30:16 +1000 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemux-stream.c: + adaptivedemux2: stream: Don't take TRACKS_LOCK when sending EOS event + The stream tracks list can't change while we're + iterating it from the scheduling thread, + and the event handler immediately takes the + tracks lock, causing a deadlock. + Part-of: + +2022-06-08 11:17:09 +0200 Edward Hervey + + * ext/adaptivedemux2/hls/gsthlsdemux.c: + hlsdemux2: Improve media playlist updates + * When dealing with rendition streams, we attempt to synchronize the media + playlist against the variant stream. This helps with speeding up the correct + initial fragment search and avoids issues when streams at activated at a much + later time. + * Also add checks for variant stream existence before attempting to use them + Part-of: + +2022-06-08 11:16:15 +0200 Edward Hervey + + * ext/adaptivedemux2/hls/gsthlsdemux.c: + hlsdemux2: Only seek on selected streams + When handling seeks, there is no need to seek on unselected streams. If they + later get activated they will be properly seek onto + Part-of: + +2022-06-08 09:33:22 +0200 Edward Hervey + + * tests/check/elements/hlsdemux_m3u8.c: + tests: check: Update hlsdemux2 tests for playlist changes + We no longer do auto-magic fallbacks when synchronizing a disconnected + playlist. It is handled at a higher level. + Part-of: + +2022-06-03 10:25:34 +0200 Edward Hervey + + * ext/adaptivedemux2/hls/m3u8.c: + hlsdemux2: Fix debug return statement + Due to latest commits res could have been NULL. + Part-of: + +2022-06-02 09:46:22 +0200 Edward Hervey + + * ext/adaptivedemux2/hls/m3u8.c: + hlsdemux2: No longer re-add segments from before the playlist + When updating playlists, there is a possibility that the playlists don't + perfectly align, but the last entry of the previous playlist is *just* before + the first entry of the new playlist. + In those cases, we still can transfer the timing information from one playlist + to another, but we do not want to return that segment as being the matching one. + Part-of: + +2022-06-01 15:45:23 +0200 Edward Hervey + + * ext/adaptivedemux2/hls/gsthlsdemux.c: + hlsdemux2: Use variant stream as support for synchronizing playlists + When matching playlists, there is a possibility that rendition streams will not + have been updated in time (for example because that stream started later, or + playback was paused). This would cause several playback failures and seeking + failures. + In order to still fall back on our feet, attempt to synchronize that rendition + playlist against the current variant playlist. This will attempt to match the + stream time using SN/DNS/PDT/... + Part-of: + +2022-05-23 15:51:23 +0200 Edward Hervey + + * ext/adaptivedemux2/hls/gsthlsdemux.c: + * ext/adaptivedemux2/hls/m3u8.c: + * ext/adaptivedemux2/hls/m3u8.h: + hlsdemux2: Detect synchronization loss + If we have been updating too slowly and have gone out of the current live + window, inform the baseclass accordingly. + This is different from the case where we have been updating quicker than what + the server provides. + Part-of: + +2022-05-23 15:48:16 +0200 Edward Hervey + + * ext/adaptivedemux2/hls/gsthlsdemux.c: + hlsdemux2: More improvement/fixes to position tracking + Part-of: + +2022-05-23 15:43:04 +0200 Edward Hervey + + * ext/adaptivedemux2/gstadaptivedemux-private.h: + * ext/adaptivedemux2/gstadaptivedemux-stream.c: + * ext/adaptivedemux2/gstadaptivedemux.c: + * ext/adaptivedemux2/gstadaptivedemux.h: + adaptivedemux2: Handle loss of synchronization + Add a new custom GstFlowReturn so that subclasses can notify that they have lost + live synchronization. + When that happens, do a flushing seek back to the live position + Part-of: + +2022-05-23 09:11:24 +0200 Edward Hervey + + * ext/adaptivedemux2/gstadaptivedemux.c: + adaptivedemux2: Fix SNAP seek handling + * Since only flushing seeks are allowed, the "current" position is always the + global output position (and not "some" stream current position). + * In terms of figuring out to which stream to "snap" to, we can send it to any + selected stream. Removes the requirement of this function to a specific output + pad. + Part-of: + +2022-05-17 07:16:48 +0200 Edward Hervey + + * ext/adaptivedemux2/hls/gsthlsdemux.c: + * ext/adaptivedemux2/hls/gsthlsdemux.h: + hlsdemux2: Fix position tracking + Remove the "pending advance" hack and instead rely on the base stream current + position to track our position (instead of a potentially NULL "current + segment"). + Also ensure the media playlists are always refreshed with valid stream time, + even if there is no current segment. + Part-of: + +2022-05-17 07:11:17 +0200 Edward Hervey + + * ext/adaptivedemux2/hls/m3u8.c: + * ext/adaptivedemux2/hls/m3u8.h: + hlsdemux2: Add a new method to synchronize two media playlist + This allows transfering the stream time of the playlist to an updated + variant/rendition. + This allows updating that information without having a "current segment" + Part-of: + +2022-05-17 07:07:23 +0200 Edward Hervey + + * ext/adaptivedemux2/gstadaptivedemux-stream.c: + * ext/adaptivedemux2/gstadaptivedemux.c: + adaptivedemux2: Initialize and use stream start/current position + The stream start and current position would be properly set when seeking or + activating a stream after playback started. But it would never be properly + initialized. + Set it to NONE initially to indicate to subclasses that no position has been + tracked yet. This will allow them to detect initial stream usage. + Futhermore, once the initial streams setup is done, make sure that it is set to + a valid initial value: + * The minimum stream time in live + * Or else the period start + Part-of: + +2022-05-19 15:51:03 -0400 Nicolas Dufresne + + * sys/v4l2/gstv4l2videodec.c: + v4l2videodec: Fix activation of internal pool + If the driver does not support VIDIOC_CREATE_BUFS ioctl, the pool + configuration may get changed, which requires a validation. This would + fail to activate a pool in a case it shouldn't normally fail unless we + are out of memory. + Part-of: + +2022-06-28 01:29:06 +0100 Tim-Philipp Müller + + * ext/dv/meson.build: + dv, opusparse: fix duplicate symbols in static build + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1262 + Part-of: + +2022-06-25 19:50:10 +0100 Tim-Philipp Müller + + * 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: + +2022-06-24 12:10:02 +0100 Tim-Philipp Müller + + * tests/examples/jack/meson.build: + examples: don't try and build jack examples if jack was disabled + Fixes meson build ERROR: Unknown variable "libjack_dep". + Fixes #1301 + Part-of: + +2022-06-17 14:02:54 +0200 Marc Leeman + + * gst/rtpmanager/rtpsession.c: + rtpsession: properly initialise favor-new property + Part-of: + +2022-05-27 11:20:06 +0200 Edward Hervey + + * ext/adaptivedemux2/hls/gsthlsdemux-util.c: + hlsdemux2: Look for mpegts synchronization point further + Some mpeg-ts streams have extra data at the beginning. While it's not ideal, we + should be able to cope with it. + Therefore increase the initial search window for at least 4 consecutive + synchronization points to 1kB. + Part-of: + +2022-05-18 10:23:15 +0300 Sebastian Dröge + + * gst/matroska/matroska-demux.c: + matroskademux: Avoid integer-overflow resulting in heap corruption in WavPack header handling code + blocksize + WAVPACK4_HEADER_SIZE might overflow gsize, which then + results in allocating a very small buffer. Into that buffer blocksize + data is memcpy'd later which then causes out of bound writes and can + potentially lead to anything from crashes to remote code execution. + Thanks to Adam Doupe for analyzing and reporting the issue. + CVE: CVE-2022-1920 + https://gstreamer.freedesktop.org/security/sa-2022-0004.html + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1226 + Part-of: + +2022-05-30 10:15:37 +0300 Sebastian Dröge + + * gst/isomp4/qtdemux.c: + qtdemux: Fix integer overflows in zlib decompression code + Various variables were of smaller types than needed and there were no + checks for any overflows when doing additions on the sizes. This is all + checked now. + In addition the size of the decompressed data is limited to 200MB now as + any larger sizes are likely pathological and we can avoid out of memory + situations in many cases like this. + Also fix a bug where the available output size on the next iteration in + the zlib decompression code was provided too large and could + potentially lead to out of bound writes. + Thanks to Adam Doupe for analyzing and reporting the issue. + CVE: tbd + https://gstreamer.freedesktop.org/security/sa-2022-0003.html + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1225 + Part-of: + +2022-05-18 11:24:37 +0300 Sebastian Dröge + + * gst/matroska/matroska-read-common.c: + matroskademux: Fix integer overflows in zlib/bz2/etc decompression code + Various variables were of smaller types than needed and there were no + checks for any overflows when doing additions on the sizes. This is all + checked now. + In addition the size of the decompressed data is limited to 120MB now as + any larger sizes are likely pathological and we can avoid out of memory + situations in many cases like this. + Also fix a bug where the available output size on the next iteration in + the zlib/bz2 decompression code was provided too large and could + potentially lead to out of bound writes. + Thanks to Adam Doupe for analyzing and reporting the issue. + CVE: CVE-2022-1922, CVE-2022-1923, CVE-2022-1924, CVE-2022-1925 + https://gstreamer.freedesktop.org/security/sa-2022-0002.html + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1225 + Part-of: + +2022-05-18 12:00:48 +0300 Sebastian Dröge + + * gst/avi/gstavidemux.c: + avidemux: Fix integer overflow resulting in heap corruption in DIB buffer inversion code + Check that width*bpp/8 doesn't overflow a guint and also that + height*stride fits into the provided buffer without overflowing. + Thanks to Adam Doupe for analyzing and reporting the issue. + CVE: CVE-2022-1921 + See https://gstreamer.freedesktop.org/security/sa-2022-0001.html + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1224 + Part-of: + +2022-05-19 04:16:25 +0000 Adam Doupe + + * gst/smpte/gstmask.c: + smpte: Fix integer overflow with possible heap corruption in GstMask creation. + Check that width*height*sizeof(guint32) doesn't overflow when + allocated user_data for mask, potential for heap overwrite when + inverting. + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1231 + Part-of: + +2022-06-14 23:03:26 +0200 Piotr Brzeziński + + * ext/adaptivedemux2/dash/gstmpd-prelude.h: + * ext/adaptivedemux2/dash/gstmpdhelper.h: + * ext/adaptivedemux2/dash/gstmpdnode.h: + * ext/adaptivedemux2/dash/gstmpdparser.h: + * ext/adaptivedemux2/dash/gstxmlhelper.h: + * ext/adaptivedemux2/hls/gsthlsdemux.c: + * ext/adaptivedemux2/hls/gsthlselement.c: + * ext/adaptivedemux2/hls/gsthlselements.h: + * ext/adaptivedemux2/hls/m3u8.c: + * ext/adaptivedemux2/mss/gstmss-prelude.h: + * ext/adaptivedemux2/mss/gstmssdemux.c: + * ext/adaptivedemux2/mss/gstmssdemux.h: + * ext/adaptivedemux2/mss/gstmssfragmentparser.h: + * ext/adaptivedemux2/mss/gstmssmanifest.h: + * ext/soup/gstsouploader.c: + * ext/soup/gstsouploader.h: + * tests/check/elements/hlsdemux_m3u8.c: + adaptivedemux2: Prevent duplicate symbols on static builds + Uses prelude header files with #defines to rename DASH and MSS + symbols duplicated in their old standalone versions. + Also redefines soup-related functions when building it for + adaptivedemux2 to prevent symbol conflicts there. + Part-of: + +2022-05-12 02:51:00 +1000 Jan Schmidt + + * ext/adaptivedemux2/gstadaptivedemux-track.c: + * ext/adaptivedemux2/gstadaptivedemux.h: + adaptivedemux2: Improve reverse playback buffering. + In reverse playback, store the lowest running time in each GOP + as the input_time for buffering purposes. That means we end up + storing at least a complete GOP before declaring buffering + 100% + Part-of: + +2022-04-08 23:06:09 +1000 Jan Schmidt + + * docs/gst_plugins_cache.json: + * ext/adaptivedemux2/gstadaptivedemux-private.h: + * ext/adaptivedemux2/gstadaptivedemux-track.c: + * ext/adaptivedemux2/gstadaptivedemux.c: + adaptivedemux2: reverse playback running times + Account for running time moving non-monotonically in + reverse playback by tracking the highest running time + seen at each point. + Part-of: + +2022-04-06 12:56:30 +0100 Tim-Philipp Müller + + * ext/adaptivedemux2/hls/m3u8.h: + * gst/rtpmanager/gstrtpjitterbuffer.c: + * gst/rtpmanager/gstrtpst2022-1-fecenc.c: + * gst/udp/gstudpelement.c: + * meson.build: + Bump GLib requirement to >= 2.62 + Can't require 2.64 yet because of + https://gitlab.freedesktop.org/gstreamer/cerbero/-/issues/323 + Part-of: + +2022-06-08 14:11:57 +0200 Marc Leeman + + * docs/gst_plugins_cache.json: + * gst/udp/gstmultiudpsink.c: + fix trivial distination -> destination + Part-of: + +2022-04-21 12:47:31 +0200 Ignacio Casal Quinteiro + + * sys/osxaudio/gstosxcoreaudiohal.c: + osxaudio: remove usage of goto + It is easier to follow the code without the goto now + Part-of: + +2022-03-30 12:59:46 +0200 Ignacio Casal Quinteiro + + * sys/osxaudio/gstosxcoreaudiohal.c: + osxaudio: support hidden devices + macOS features hidden devices. These are devices that will + not be shown in the macOS UIs and that cannot be retrieved + without having the specific UID of the hidden device. There + are cases when you might want to have a hidden device, for example + when having a virtual speaker that forwards the data to a virtual + hidden input device from which you can then grab the audio. + The blackhole project supports these hidden devices and + this patch provides a way that if the device id is a hidden + device it will use it instead of check the hardware list of devices + to understand if the device is valid. + Part-of: + +2022-04-20 18:12:02 +0200 Ignacio Casal Quinteiro + + * sys/osxaudio/gstosxcoreaudiohal.c: + osx: fix indent + Part-of: + +2022-03-30 12:48:02 +0200 Ignacio Casal Quinteiro + + * sys/osxaudio/gstosxcoreaudiohal.c: + osxaudio: iterate device only if needed + Part-of: + +2022-03-30 09:59:59 +0200 Ignacio Casal Quinteiro + + * sys/osxaudio/gstosxcoreaudiohal.c: + osxaudio: reduce scope of default device id variable + Part-of: + +2022-06-07 17:31:43 +0200 Bastien Nocera + + * ext/gtk/gtkgstglwidget.c: + gtk: Fix double-free when OpenGL can't be initialised + gtk_gl_area_get_error() doesn't return a copy of the error, but just the + error. If initialising OpenGL fails, then GtkGstGLWidget will consume + the error, and cause GTK to try and display freed memory. + ==50914== Invalid read of size 8 + ==50914== at 0x4C4CB8A: gtk_gl_area_draw_error_screen (gtkglarea.c:663) + ==50914== by 0x4C4CB8A: gtk_gl_area_draw (gtkglarea.c:687) + ==50914== by 0x4E061CA: gtk_widget_draw_internal (gtkwidget.c:7084) + ==50914== by 0x4BAEFB1: gtk_container_propagate_draw (gtkcontainer.c:3854) + ==50914== by 0x4D4B6BF: gtk_stack_render (gtkstack.c:2207) + ==50914== by 0x4BB4B03: gtk_css_custom_gadget_draw (gtkcsscustomgadget.c:159) + ==50914== by 0x4BBA4C4: gtk_css_gadget_draw (gtkcssgadget.c:885) + ==50914== by 0x4D4D780: gtk_stack_draw (gtkstack.c:2119) + ==50914== by 0x4E061CA: gtk_widget_draw_internal (gtkwidget.c:7084) + ==50914== by 0x4BAEFB1: gtk_container_propagate_draw (gtkcontainer.c:3854) + ==50914== by 0x4BAF0C3: gtk_container_draw (gtkcontainer.c:3674) + ==50914== by 0x4E061CA: gtk_widget_draw_internal (gtkwidget.c:7084) + ==50914== by 0x4BAEFB1: gtk_container_propagate_draw (gtkcontainer.c:3854) + ==50914== Address 0x187a0818 is 8 bytes inside a block of size 16 free'd + ==50914== at 0x48480E4: free (vg_replace_malloc.c:872) + ==50914== by 0x49A5B8C: g_free (gmem.c:218) + ==50914== by 0x49C1013: g_slice_free1 (gslice.c:1183) + ==50914== by 0x4990DE4: g_error_free (gerror.c:870) + ==50914== by 0x4990FE9: g_clear_error (gerror.c:1052) + ==50914== by 0x1A489780: _get_gl_context (gtkgstglwidget.c:540) + ==50914== by 0x1A4863CB: gst_gtk_invoke_func (gstgtkutils.c:39) + ==50914== by 0x49A3834: g_main_context_invoke_full (gmain.c:6137) + ==50914== by 0x1A486450: gst_gtk_invoke_on_main (gstgtkutils.c:59) + ==50914== by 0x1A48A29E: gtk_gst_gl_widget_init_winsys (gtkgstglwidget.c:632) + ==50914== by 0x1A4887E7: gst_gtk_gl_sink_start (gstgtkglsink.c:267) + ==50914== by 0x6579810: gst_base_sink_change_state (gstbasesink.c:5662) + ==50914== Block was alloc'd at + ==50914== at 0x484586F: malloc (vg_replace_malloc.c:381) + ==50914== by 0x49A9278: g_malloc (gmem.c:125) + ==50914== by 0x49C1BA5: g_slice_alloc (gslice.c:1072) + ==50914== by 0x49C3BCC: g_slice_alloc0 (gslice.c:1098) + ==50914== by 0x499096B: g_error_allocate (gerror.c:708) + ==50914== by 0x4990AF1: UnknownInlinedFun (gerror.c:722) + ==50914== by 0x4990AF1: g_error_copy (gerror.c:892) + ==50914== by 0x4C4B9F9: gtk_gl_area_set_error (gtkglarea.c:1036) + ==50914== by 0x4C4BAF7: gtk_gl_area_real_create_context (gtkglarea.c:346) + ==50914== by 0x4B21B28: _gtk_marshal_OBJECT__VOIDv (gtkmarshalers.c:2730) + ==50914== by 0x4920B78: UnknownInlinedFun (gclosure.c:893) + ==50914== by 0x4920B78: g_signal_emit_valist (gsignal.c:3406) + ==50914== by 0x4920CB2: g_signal_emit (gsignal.c:3553) + ==50914== by 0x4C4B927: gtk_gl_area_realize (gtkglarea.c:308) + Reproduced by running: + MESA_GL_VERSION_OVERRIDE=2.7 totem + See https://gitlab.gnome.org/GNOME/totem/-/issues/522 + Part-of: + +2022-06-06 12:31:52 +0300 Sebastian Dröge + + * gst/flv/gstflvdemux.c: + * gst/flv/gstflvdemux.h: + flvdemux: Make use of the streams API if used in a streams-aware bin + This allows adding audio/video streams after 6s. + Part-of: + +2022-06-03 18:35:54 +0200 Jan Alexander Steffens (heftig) + + * gst/audioparsers/gstaacparse.c: + aacparse: Avoid mismatch between src_caps and output_header_type + If our downstream caps didn't intersect, we attempted to convert between + raw and ADTS stream formats, if possible. If the caps still did not + intersect, we then used the modified `src_caps` but left the + `output_header_type` unmodified. + This caused a mismatch between caps and actual stream format. + Avoid this by first copying the `src_caps` to `convcaps` for the + additional intersection tests, replacing `src_caps` if we succeed. + While we're here, clean up the code a bit and remove the `codec_data` + field from outgoing ADTS caps. + Part-of: + +2022-06-04 10:27:09 +0300 Sebastian Dröge + + * gst/flv/gstflvdemux.c: + * gst/flv/gstflvelement.c: + flvdemux: Actually make use of the debug category + Part-of: + +2022-06-01 16:14:24 +0200 Stéphane Cerveau + + * ext/soup/gstsoup.c: + * ext/soup/gstsoupelement.c: + * ext/soup/gstsouploader.c: + soup: fix soup debug category + Use soup debug category in souploader + for soup plugin element load. + Inititalize properly soup utils category. + Part-of: + +2022-05-29 06:05:27 +0900 Seungha Yang + + * ext/adaptivedemux2/hls/m3u8.c: + hlsdemux2: Adjust debug log level + HLS manifest might not be represented by a single common caps + when different codecs are mixed in a playlist, but it + does not seem to be a critical issue we need to warn. + Part-of: + +2022-05-02 16:55:34 +0200 Stéphane Cerveau + + * ext/adaptivedemux2/dash/gstdashdemux.c: + * ext/adaptivedemux2/dash/gstdashdemux.h: + * ext/adaptivedemux2/gstadaptivedemux.c: + * ext/adaptivedemux2/gstadaptivedemuxelement.c: + * ext/adaptivedemux2/gstadaptivedemuxelements.h: + * ext/adaptivedemux2/hls/gsthlsdemux.c: + * ext/adaptivedemux2/hls/gsthlsdemux.h: + * ext/adaptivedemux2/meson.build: + * ext/adaptivedemux2/mss/gstmssdemux.c: + * ext/adaptivedemux2/mss/gstmssdemux.h: + * ext/adaptivedemux2/plugin.c: + adaptivedemux2: fix plugin/element init + In case of per features registration such as the + customizable gstreamer-full library, each + element should check that the soup library can be loaded to + facilitate the element registration. + Initialize the debug categories properly + Part-of: + +2022-05-29 20:27:38 +1000 Jan Schmidt + + * gst/rtpmanager/gstrtpptdemux.c: + rtpptdemux: Don't GST_FLOW_ERROR when ignoring invalid packets + https://bugzilla.gnome.org/show_bug.cgi?id=741398 changed + rtpptdemux in 2014 to not post a GST_ELEMENT_ERROR on the + bus when dropping an invalid (non-RTP) packet, but still + returned GST_FLOW_ERROR upstream - so the pipeline still + stops, but now without a useful bus error. + Return GST_FLOW_OK instead, so the pipeline keeps + running. Some old telephony equipment can send invalid + packets before the real RTP traffic starts. + Part-of: + +2022-05-28 16:46:04 +0530 Nirbheek Chauhan + + * ext/jack/gstjackaudiosrc.c: + jack: Always use jack_free as specified by the docs + Fixes a crash on Windows due to a CRT mismatch. The JACK installation + still uses MSVCRT, and we the Universal CRT for both MinGW and MSVC. + Part-of: + +2022-05-26 01:21:43 +0530 Nirbheek Chauhan + + * ext/jack/meson.build: + jack: Add support for detecting libjack on Windows + No source code changes were necessary to get the plugin working on + Windows with MSVC. + Run QJackCtl and audiotestsrc ! jackaudiosink just works. + Part-of: + +2022-05-24 16:07:13 +0800 Hou Qi + + * sys/v4l2/gstv4l2object.c: + v4l2: Reset transfer in gst_v4l2_object_acquire_format() + get_colorspace() checks input caps transfer when mapping V4L2_XFER_FUNC_709 + back to V4L2_COLORSPACE_BT2020 and GST_VIDEO_TRANSFER_BT2020_12. After + receiving source change event, decoder will G_FMT and S_FMT again. So need + to reset transfer when acquiring format to avoid using the old transfer. + Part-of: + +2022-05-25 13:00:58 +0200 Piotrek Brzeziński + + * gst/cutter/gstcutter.c: + * gst/cutter/gstcutter.h: + cutter: Include running/stream-time in messages + Part-of: + +2022-05-03 11:34:15 +0200 Stéphane Cerveau + + * ext/soup/gstsoup.c: + * ext/soup/gstsoupelement.c: + * ext/soup/gstsoupelements.h: + * ext/soup/gstsouphttpclientsink.c: + * ext/soup/gstsouphttpsrc.c: + soup: Fix plugin/element init + In case of per features registration such as the + customizable gstreamer-full library, each + element should check that the soup library can be loaded to + facilitate the element registration. + Initialize the debug category properly + Part-of: + +2022-05-23 21:24:40 -0400 Eli Schwartz + + * 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: + +2022-05-19 16:33:47 -0400 Nicolas Dufresne + + * sys/v4l2/gstv4l2videodec.c: + v4l2videodec: Fix missing handling of resolution-change + The pool process function may poll and get the resolution-change event + whenever it is not possible to share our buffers. This typically happen + when downstream does not support GstVideoMeta. + Not handling this would cause the decoder thread to exit silently and the + pipeline to stall. + Part-of: + +2022-05-19 16:39:14 -0400 Nicolas Dufresne + + * sys/v4l2/gstv4l2videodec.c: + v4l2videodec: Downgrade to info resolution-change trace + Part-of: + +2022-05-23 20:23:38 +0100 Tim-Philipp Müller + + * ext/shout2/gstshout2.c: + * ext/shout2/gstshout2.h: + * ext/shout2/meson.build: + shout2: fix compiler warnings and bump req to libshout >= 2.4.2 + Fix compiler warnings with latest libshout version (2.4.6). + Part-of: + +2022-05-14 14:58:04 +0200 László Károlyi + + * docs/gst_plugins_cache.json: + * ext/shout2/gstshout2.c: + * ext/shout2/gstshout2.h: + shout2send: Adding send-title-info and user-agent options + Part-of: + +2022-05-19 11:47:57 +0300 Sebastian Dröge + + * gst/isomp4/qtdemux.c: + * gst/isomp4/qtdemux.h: + qtdemux: Add support for ONVIF XML Timed MetaData + Part-of: + +2022-05-19 11:30:20 +0300 Sebastian Dröge + + * gst/isomp4/fourcc.h: + * gst/isomp4/qtdemux_dump.c: + * gst/isomp4/qtdemux_types.c: + qtdemux: Add parsing/dumping of nmhd / metx boxes + Part-of: + +2022-05-19 11:06:31 +0300 Sebastian Dröge + + * gst/isomp4/fourcc.h: + * gst/isomp4/qtdemux.c: + qtdemux: Parse styp box for informational purposes + And include some more details in the debug logs for the ftyp box too. + Part-of: + +2022-05-10 16:20:46 +0800 Hou Qi + + * sys/v4l2/gstv4l2object.c: + v4l2: set default resolution if caps has no such information + Output may attemp to set the width and height to zero values if + caps has no such information, which will cause capture get invalid + dimensions. Then decoder reports negotiation failure. + So need to set default resolution if caps has no such information. + Real values can be set again until source change event is signaled. + Part-of: + +2022-05-17 05:21:19 +1000 Jan Schmidt + + * gst/multifile/gstsplitmuxpartreader.c: + splitmuxsrc: Re-queue sticky events after probing. + When processing the first event after probing the + file and being activated, requeue sticky events + as there's no requirement that demuxers send tag + and other events again after a seek - that's + why they're sticky. + Part-of: + +2022-05-16 14:14:46 +0200 Jan Alexander Steffens (heftig) + + * gst/deinterlace/gstdeinterlace.c: + deinterlace: Clean up error handling in chain and _push_history + - Consistently unref the chained buffer at the end of the chain + function, if we're not handing it off to `gst_pad_push`. This avoids a + few buffer leaks in the error paths in `_chain` and `_push_history`. + - When mapping the video frame fails, return a flow error instead of + crashing. + Part-of: + +2022-05-16 14:40:41 +0200 Jan Alexander Steffens (heftig) + + * gst/multifile/gstsplitmuxsink.c: + * gst/multifile/gstsplitmuxsink.h: + splitmuxsink: When flushing, exit handle_mq_input quickly + If we just break the loop, we might run into the `gop != NULL` assert + that follows it. Rather, exit immediately with flushing flow. + Also use this flushing mechanism when we release a pad. This avoids + having an extra flag. + Part-of: + +2021-01-26 16:33:25 +0100 Jan Alexander Steffens (heftig) + + * gst/multifile/gstsplitmuxsink.c: + splitmuxsink: Avoid deadlock on release, harder + Unlock after broadcasting and wait for the pad to be free before + relocking the muxer, giving the input probe a chance to react to our + broadcast. + Improves the fix from + https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/838. + Part-of: + +2022-05-16 19:31:18 +0900 Shingo Kitagawa + + * gst/wavparse/gstwavparse.c: + wavparse: fix typo in debug message + Part-of: + +2022-05-13 01:42:21 +0000 Thibault Saunier + + * gst/rtpmanager/gstrtpbin.c: + rtpbin: Avoid holding lock GST_RTP_BIN_LOCK when emitting pad-added + Part-of: + +2022-05-12 17:11:38 +0300 Sebastian Dröge + + * gst/isomp4/qtdemux.c: + qtdemux: Don't use tfdt for parsing subsequent trun boxes + The timestamp in the tfdt refers to the first trun box and if there are + multiple trun boxes then the distance between the first timestamps will + grow. + At some point this distance reaches a threshold and triggers the + resetting of the first sample's timestamp of this trun box to be reset + to the tfdt. + This threshold is implemented for files where there is a jump in the + timeline between fragments and where this can be detected via a jump + between the end timestamp of the previous fragment and the tfdt of the + next. This behaviour is preserved. + Part-of: + +2022-05-11 16:20:42 +0200 Guillaume Desmottes + + * ext/vpx/gstvpxenc.c: + * ext/vpx/gstvpxenc.h: + vpxenc: enforce strictly increasing pts + From vpx_codec_encode() documentation: + "The presentation time stamp (PTS) MUST be strictly increasing." + Part-of: + +2022-05-11 15:37:44 +0200 Guillaume Desmottes + + * ext/vpx/gstvpxenc.c: + vpxenc: conver input pts to running time + The input pts needs to be strictly increasing, see vpx_codec_encode() doc, so convert it to + running time as we don't want to reset the encoder for each segment. + Part-of: + +2022-05-11 15:18:42 +0200 Guillaume Desmottes + + * ext/vpx/gstvpxenc.c: + vpxenc: fix crash if encoder produces unmatching ts + If for some reason the encoder produces frames with a pts higher than + the input one, we were dropping all the video encoder frames and ended + up crashing when trying to access the pts of a NULL pointer returned by + gst_video_encoder_get_oldest_frame(). + I hit this scenario by feeding a decreasing timestamp to vp8enc which + seem to confuse the encoder. + Part-of: + +2022-04-28 09:19:57 -0400 Nicolas Dufresne + + * sys/v4l2/gstv4l2object.c: + * sys/v4l2/gstv4l2videoenc.c: + v4l2videoenc: Setup crop rectangle if needed + Hantro H1 and Rockchip VEPU2 drivers will pad the width/height to a + multiple of 16. In order to obtain the right JPEG size, the image needs + to be cropped using the S_SELECTION API. This support is added as best + effort since older drivers may emulate this by looking at the capture + queue width/height. + Part-of: + +2022-05-05 20:36:04 +0300 Sebastian Dröge + + * gst/isomp4/gstqtmux.c: + mp4mux: Disable aggregator's default negotiation + mp4mux can't negotiate caps with upstream/downstream and always outputs + specific caps based on the input streams. This will always happen before + it produces the first buffers. + By having the default aggregator negotiation enabled the same caps + would be pushed twice in the beginning, and again every time a + reconfigure event is received. + Part-of: + +2022-05-05 20:24:57 +0300 Sebastian Dröge + + * gst/flv/gstflvmux.c: + flvmux: Disable aggregator's default negotiation + flvmux can't negotiate caps with upstream/downstream and always outputs + specific caps based on the input streams. This will always happen before + it produces the first buffers. + By having the default aggregator negotiation enabled the same caps + would be pushed twice in the beginning, and again every time a + reconfigure event is received. + Part-of: + +2022-05-03 17:27:32 +1000 Matthew Waters + + * gst/wavparse/gstwavparse.c: + wavparse: ensure that any pending segment is sent before an EOS event is sent + Specifically fixes seqnum handling when an aggregator-based element + (audiomixer et al) is downstream and a seek is performed that + immediately causes an EOS from wavparse. + Part-of: + +2022-04-29 23:33:47 +0300 Sebastian Dröge + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: Free CNAME/SSRC mappings on finalize and PAUSED->READY + Part-of: + +2022-04-29 23:13:15 +0300 Sebastian Dröge + + * gst/rtpmanager/gstrtpbin.c: + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpmanager: Refactor RTCP packet loops to fix control flow + Mixing C loops with switch statements is a bad idea as break has a + different meaning in both. Breaking inside the switch statements wrongly + caused further loop iterations. + Instead use goto to get out of the loop and continue to do another loop + iteration, and never ever use break except for the end of a case. + Part-of: + +2022-04-28 00:58:30 +0900 Seungha Yang + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: Initialize variables + Avoid use of uninitialized variable + Fixing MSVC warning + gstrtpjitterbuffer.c(4733) : warning C4700: uninitialized local variable 'have_sdes' used + Part-of: + +2022-04-28 10:49:55 +0200 Edward Hervey + + * ext/adaptivedemux2/mss/gstmssdemux.c: + mssdemux2: Don't expose/use streams we can't handle yet + Avoids issues further down + Part-of: + +2022-04-28 10:46:34 +0200 Edward Hervey + + * ext/adaptivedemux2/mss/gstmssdemux.c: + * ext/adaptivedemux2/mss/gstmssmanifest.c: + * ext/adaptivedemux2/mss/gstmssmanifest.h: + mssdemux2: Ensure stream/track uniqueness + If there is more than one track of the same type (say audio), we would end up + creating several stream/types with the same name. + Instead use the MSS stream name property to make them unique + Part-of: + +2022-04-27 12:24:23 +0900 dongil.park + + * gst/wavparse/gstwavparse.c: + wavparse: Unset DISCONT buffer flag for divided into multiple buffers in push mode + In push mode (streaming), if the received chunk buffer size from _chain is bigger + than output buffer size, the flags of the divided-buffers are propagated to the + DISCONT flag from first received chunk buffer. This unexpected buffers contained DISCONT + flags are abnormally transformed when changing the sampling rate by audioresample element. + So unset unnecessary DISCONT flag before pad_push(). + Part-of: + +2022-04-26 22:17:51 +0300 Sebastian Dröge + + * docs/gst_plugins_cache.json: + * gst/rtpmanager/gstrtpbin.c: + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: add the reference timestamp meta in more situations + Previously, we only added it when actually performing synchronization + based on the NTP time. + The information can be useful downstream in other situations too, and + we can compute a NTP time as soon as we get a sender report with the + relevant information. + Co-authored-by: Mathieu Duponchelle + Part-of: + +2022-04-20 17:35:29 +0300 Sebastian Dröge + + * gst/rtp/gstrtpgstpay.c: + * gst/rtp/gstrtpgstpay.h: + rtpgstpay: Don't push packets before the first input buffer is received + It's not possible to create a valid RTP timestamp for them, which would + cause a potentially very big RTP timestamp discontinuity between those + first packets (created from initial events) and the packet based on the + first input buffer. + As a side-effect, also simplify the packet aggregation code a bit and + work with only a single level of buffer lists. + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1157 + Part-of: + +2022-04-22 12:19:03 +0200 Havard Graff + + * gst/rtpmanager/rtptwcc.c: + rtptwcc: don't map the buffer twice + ...and use the pt extracted rather than the one from RTPPacketInfo + when logging. + Part-of: + +2022-04-22 02:41:16 +0000 Thibault Saunier + + * gst/rtpmanager/rtpsession.c: + rtpsession: Emit "notify::stats" when we update stats from RR or SR + Sensibily optimizing caching the pspecs and using them directly + Part-of: + +2022-04-23 01:57:53 +0200 Mathieu Duponchelle + + * gst/rtp/gstrtpredenc.c: + * gst/rtp/gstrtpredenc.h: + rtpredenc: quieten warning about ignoring header extensions + Turn it into a FIXME, and only log once + Part-of: + +2021-02-01 10:36:42 +0100 Havard Graff + + * gst/rtpmanager/gstrtprtxsend.c: + * tests/check/elements/rtprtx.c: + rtprtxsend: mark RTX buffers with GST_RTP_BUFFER_FLAG_RETRANSMISSION + It is useful for elements downstream from rtxsend to know if the RTP + buffer they are dealing with is an RTX buffer or not. + Part-of: + +2022-04-19 18:40:31 -0400 Tristan Matthews + + * docs/gst_plugins_cache.json: + * gst/isomp4/gstqtmux.c: + mp4mux: fix spelling + Part-of: + +2022-01-21 14:21:18 +0100 Jonas Bonn + + * gst/udp/gstmultiudpsink.c: + multiudpsink: allow binding to IPv6 address + When the sink is configured to create sockets with an explicit bind + address, then the created socket gets set to the udp_socket field + irregardless of whether the bind address indicated that the socket + family should be IPv4 or IPv6. When binding to an IPv6 address, this + results in the following error: + gstmultiudpsink.c:1285:gst_multiudpsink_configure_client: + error: Invalid address family (got 10) + This patch adds a check of the address family being bound to and sets + the created socket to used_socket or used_socket_v6, accordingly. + Part-of: + +2022-04-18 18:20:00 +0900 Camilo Celis Guzman + + * tests/check/elements/rtphdrextsdes.c: + rtphdrextsdes: fixup test trying to g_free a local variable + Part-of: + +2022-04-21 11:47:55 +0200 Edward Hervey + + * ext/adaptivedemux2/hls/m3u8.c: + hls/m3u8: Fix starting segment for live playlist + RFC 8216 6.3.3 "Playing the Media Playlist File" : states that for live media + playlists "the client SHOULD NOT choose a segment that starts less than three + target durations from the end of the Playlist file" + This is an off-by-one error. Since we are looking for the "index" of the + segment, we need to subtract 1 from the searched position. + Ex: For a playlist with 12 entries, we want to start playback on the 9th segment + ... which is at index 8. + Part-of: + +2022-04-20 14:50:35 +0200 Edward Hervey + + * ext/adaptivedemux2/hls/gsthlsdemux-util.c: + hls: Relax webvtt checks + If no hour field is present (which is allowed), the remaining data can be less + than 15 character. + Fix time translation failures if the hour field wasn't present + Part-of: + +2022-04-20 10:53:16 +0300 Sebastian Dröge + + * gst/rtpmanager/gstrtpbin.c: + * gst/rtpmanager/gstrtpfunnel.c: + * gst/rtpmanager/gstrtpjitterbuffer.c: + * gst/rtpmanager/gstrtpsession.c: + * gst/rtpmanager/gstrtputils.c: + * gst/rtpmanager/gstrtputils.h: + * gst/rtpmanager/meson.build: + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtptwcc.c: + rtpmanager: Move some duplicated constant and helper function to a single place + Part-of: + +2022-04-18 16:22:50 +0300 Sebastian Dröge + + * gst/rtpmanager/gstrtpbin.c: + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpbin/rtpjitterbuffer: Don't parse RTCP SRs twice unless needed + Part-of: + +2022-04-18 11:50:48 +0300 Sebastian Dröge + + * docs/gst_plugins_cache.json: + * gst/rtpmanager/gstrtpbin.c: + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: Add property to throttle handling of RTCP SR / NTP-64 syncing + This proxies the "rtcp-sync-interval" property of rtpbin. + Part-of: + +2022-04-11 19:14:43 +0300 Sebastian Dröge + + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtpsession.h: + rtpsession: Handle RTCP-SR-REQ (RFC6051) RTCP feedback message + This causes an RTCP SR to be sent at the earliest possible time. + Part-of: + +2022-04-11 19:25:43 +0300 Sebastian Dröge + + * gst/rtpmanager/gstrtpbin.c: + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpbin/rtpjitterbuffer: Allow syncing to an SR without CNAME if the CNAME is already known + The RTCP SR packet might be without SDES in case of a reduced-size RTCP + packet. For syncing purposes the CNAME is needed but it might be known + already from an earlier RTCP packet or out of band, via the SDP for + example. + Part-of: + +2022-04-07 18:59:07 +0300 Sebastian Dröge + + * gst/rtpmanager/gstrtpbin.c: + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpbin/jitterbuffer: Use inband 64-bit NTP timestamps according to RFC6051 for faster synchronization + When signalled via the caps that the header extension is used, it will + be read and used in the same way as the RTP/NTP time mapping from RTCP + SRs. + If the CNAME of the stream's SSRC is provided out of band via e.g. the + SDP then this allows streams to be synchronized immediately on the first + packet instead of having to wait for the first RTCP SR to arrive. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/383 + Part-of: + +2022-04-09 11:00:52 +0300 Sebastian Dröge + + * gst/rtpmanager/gstrtpsession.c: + rtpsession: Only add send latency to the running time if it is actually known + Otherwise we can't know the running time yet if rtcp-sync-send-time is + set, and have to wait until the latency is known later. + Part-of: + +2022-04-06 15:39:14 +0300 Sebastian Dröge + + * gst/rtpmanager/gstrtpsession.c: + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtpsession.h: + * gst/rtpmanager/rtpstats.h: + rtpsession: Update 64-bit NTP header extensions with the actual NTP time in senders + Part-of: + +2022-04-05 20:05:57 +0300 Sebastian Dröge + + * docs/gst_plugins_cache.json: + * gst/rtpmanager/gstrtphdrext-ntp.c: + * gst/rtpmanager/gstrtphdrext-ntp.h: + * gst/rtpmanager/gstrtpmanager.c: + * gst/rtpmanager/meson.build: + rtpmanager: Add header extension implementation for the 64-bit RFC6051 NTP header extension + Part-of: + +2022-03-25 10:18:34 -0400 Xavier Claessens + + * 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: + +2022-03-25 10:20:24 -0400 Xavier Claessens + + * gst-libs/gst/gettext.h: + * gst-libs/gst/gst-i18n-plugin.h: + Delete unused i18n headers + Part-of: + +2022-03-25 09:59:23 -0400 Xavier Claessens + + * ext/adaptivedemux2/gstadaptivedemux-stream.c: + * ext/adaptivedemux2/gstadaptivedemux.c: + * ext/adaptivedemux2/mss/gstmssdemux.c: + * ext/flac/gstflacdec.c: + * ext/flac/gstflacelement.c: + * ext/jack/gstjackaudiosink.c: + * ext/jack/gstjackaudiosrc.c: + * ext/jpeg/gstjpegdec.c: + * ext/lame/gstlamemp3enc.c: + * ext/lame/plugin.c: + * ext/libpng/gstpngdec.c: + * ext/pulse/gstpulseelement.c: + * ext/pulse/pulsesink.c: + * ext/shout2/gstshout2.c: + * ext/soup/gstsoup.c: + * ext/soup/gstsoupelement.c: + * ext/soup/gstsouphttpsrc.c: + * ext/twolame/gsttwolamemp2enc.c: + * ext/wavpack/gstwavpackelement.c: + * gst/apetag/gstapedemux.c: + * gst/avi/gstavidemux.c: + * gst/avi/gstavielement.c: + * gst/avi/gstavimux.c: + * gst/icydemux/gsticydemux.c: + * gst/id3demux/gstid3demux.c: + * gst/isomp4/gstisomp4element.c: + * gst/isomp4/isomp4-plugin.c: + * gst/isomp4/qtdemux.c: + * gst/multifile/gstsplitmuxsrc.c: + * gst/rtsp/gstrtspelement.c: + * gst/rtsp/gstrtspsrc.c: + * gst/wavparse/gstwavparse.c: + * sys/oss/gstossaudio.c: + * sys/oss/gstossaudioelement.c: + * sys/oss/gstosshelper.c: + * sys/oss/gstosssink.c: + * sys/oss/gstosssrc.c: + * sys/oss4/oss4-audio.c: + * sys/oss4/oss4-sink.c: + * sys/oss4/oss4-source.c: + * sys/osxaudio/gstosxaudioringbuffer.c: + * sys/rpicamsrc/gstrpicamsrcdeviceprovider.c: + * sys/v4l2/gstv4l2.c: + * sys/v4l2/gstv4l2bufferpool.c: + * sys/v4l2/gstv4l2element.c: + * sys/v4l2/gstv4l2fwhtenc.c: + * sys/v4l2/gstv4l2h263enc.c: + * sys/v4l2/gstv4l2h264enc.c: + * sys/v4l2/gstv4l2h265enc.c: + * sys/v4l2/gstv4l2jpegenc.c: + * sys/v4l2/gstv4l2mpeg4enc.c: + * sys/v4l2/gstv4l2object.c: + * sys/v4l2/gstv4l2radio.c: + * sys/v4l2/gstv4l2sink.c: + * sys/v4l2/gstv4l2src.c: + * sys/v4l2/gstv4l2transform.c: + * sys/v4l2/gstv4l2videodec.c: + * sys/v4l2/gstv4l2videoenc.c: + * sys/v4l2/gstv4l2vp8enc.c: + * sys/v4l2/gstv4l2vp9enc.c: + * sys/v4l2/v4l2_calls.c: + * sys/ximage/gstximagesrc.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: + +2022-04-19 09:52:51 +0100 Tim-Philipp Müller + + * tests/check/elements/dash_mpd.c: + tests: dash_mpd: fix linker issues with non-optimizing compilers + undefined reference to `download_request_take_buffer' + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2117#note_1344646 + Part-of: + +2021-11-12 20:13:10 +0100 Ruben Gonzalez + + * docs/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: + +2022-03-11 17:11:50 +0100 Edward Hervey + + * docs/gst_plugins_cache.json: + * docs/meson.build: + * ext/adaptivedemux2/dash/gstdash_debug.h: + * ext/adaptivedemux2/dash/gstdashdemux.c: + * ext/adaptivedemux2/dash/gstdashdemux.h: + * ext/adaptivedemux2/dash/gstmpdadaptationsetnode.c: + * ext/adaptivedemux2/dash/gstmpdadaptationsetnode.h: + * ext/adaptivedemux2/dash/gstmpdbaseurlnode.c: + * ext/adaptivedemux2/dash/gstmpdbaseurlnode.h: + * ext/adaptivedemux2/dash/gstmpdclient.c: + * ext/adaptivedemux2/dash/gstmpdclient.h: + * ext/adaptivedemux2/dash/gstmpdcontentcomponentnode.c: + * ext/adaptivedemux2/dash/gstmpdcontentcomponentnode.h: + * ext/adaptivedemux2/dash/gstmpddescriptortypenode.c: + * ext/adaptivedemux2/dash/gstmpddescriptortypenode.h: + * ext/adaptivedemux2/dash/gstmpdhelper.c: + * ext/adaptivedemux2/dash/gstmpdhelper.h: + * ext/adaptivedemux2/dash/gstmpdlocationnode.c: + * ext/adaptivedemux2/dash/gstmpdlocationnode.h: + * ext/adaptivedemux2/dash/gstmpdmetricsnode.c: + * ext/adaptivedemux2/dash/gstmpdmetricsnode.h: + * ext/adaptivedemux2/dash/gstmpdmetricsrangenode.c: + * ext/adaptivedemux2/dash/gstmpdmetricsrangenode.h: + * ext/adaptivedemux2/dash/gstmpdmultsegmentbasenode.c: + * ext/adaptivedemux2/dash/gstmpdmultsegmentbasenode.h: + * ext/adaptivedemux2/dash/gstmpdnode.c: + * ext/adaptivedemux2/dash/gstmpdnode.h: + * ext/adaptivedemux2/dash/gstmpdparser.c: + * ext/adaptivedemux2/dash/gstmpdparser.h: + * ext/adaptivedemux2/dash/gstmpdperiodnode.c: + * ext/adaptivedemux2/dash/gstmpdperiodnode.h: + * ext/adaptivedemux2/dash/gstmpdprograminformationnode.c: + * ext/adaptivedemux2/dash/gstmpdprograminformationnode.h: + * ext/adaptivedemux2/dash/gstmpdreportingnode.c: + * ext/adaptivedemux2/dash/gstmpdreportingnode.h: + * ext/adaptivedemux2/dash/gstmpdrepresentationbasenode.c: + * ext/adaptivedemux2/dash/gstmpdrepresentationbasenode.h: + * ext/adaptivedemux2/dash/gstmpdrepresentationnode.c: + * ext/adaptivedemux2/dash/gstmpdrepresentationnode.h: + * ext/adaptivedemux2/dash/gstmpdrootnode.c: + * ext/adaptivedemux2/dash/gstmpdrootnode.h: + * ext/adaptivedemux2/dash/gstmpdsegmentbasenode.c: + * ext/adaptivedemux2/dash/gstmpdsegmentbasenode.h: + * ext/adaptivedemux2/dash/gstmpdsegmentlistnode.c: + * ext/adaptivedemux2/dash/gstmpdsegmentlistnode.h: + * ext/adaptivedemux2/dash/gstmpdsegmenttemplatenode.c: + * ext/adaptivedemux2/dash/gstmpdsegmenttemplatenode.h: + * ext/adaptivedemux2/dash/gstmpdsegmenttimelinenode.c: + * ext/adaptivedemux2/dash/gstmpdsegmenttimelinenode.h: + * ext/adaptivedemux2/dash/gstmpdsegmenturlnode.c: + * ext/adaptivedemux2/dash/gstmpdsegmenturlnode.h: + * ext/adaptivedemux2/dash/gstmpdsnode.c: + * ext/adaptivedemux2/dash/gstmpdsnode.h: + * ext/adaptivedemux2/dash/gstmpdsubrepresentationnode.c: + * ext/adaptivedemux2/dash/gstmpdsubrepresentationnode.h: + * ext/adaptivedemux2/dash/gstmpdsubsetnode.c: + * ext/adaptivedemux2/dash/gstmpdsubsetnode.h: + * ext/adaptivedemux2/dash/gstmpdurltypenode.c: + * ext/adaptivedemux2/dash/gstmpdurltypenode.h: + * ext/adaptivedemux2/dash/gstmpdutctimingnode.c: + * ext/adaptivedemux2/dash/gstmpdutctimingnode.h: + * ext/adaptivedemux2/dash/gstxmlhelper.c: + * ext/adaptivedemux2/dash/gstxmlhelper.h: + * ext/adaptivedemux2/downloadhelper.c: + * ext/adaptivedemux2/downloadhelper.h: + * ext/adaptivedemux2/downloadrequest.c: + * ext/adaptivedemux2/downloadrequest.h: + * ext/adaptivedemux2/gstadaptivedemux-period.c: + * ext/adaptivedemux2/gstadaptivedemux-private.h: + * ext/adaptivedemux2/gstadaptivedemux-stream.c: + * ext/adaptivedemux2/gstadaptivedemux-track.c: + * ext/adaptivedemux2/gstadaptivedemux.c: + * ext/adaptivedemux2/gstadaptivedemux.h: + * ext/adaptivedemux2/gstadaptivedemuxutils.c: + * ext/adaptivedemux2/gstadaptivedemuxutils.h: + * ext/adaptivedemux2/gstisoff.c: + * ext/adaptivedemux2/gstisoff.h: + * ext/adaptivedemux2/hls/gsthlsdemux-util.c: + * ext/adaptivedemux2/hls/gsthlsdemux.c: + * ext/adaptivedemux2/hls/gsthlsdemux.h: + * ext/adaptivedemux2/hls/gsthlselement.c: + * ext/adaptivedemux2/hls/gsthlselements.h: + * ext/adaptivedemux2/hls/m3u8.c: + * ext/adaptivedemux2/hls/m3u8.h: + * ext/adaptivedemux2/hls/meson.build: + * ext/adaptivedemux2/meson.build: + * ext/adaptivedemux2/mss/gstmssdemux.c: + * ext/adaptivedemux2/mss/gstmssdemux.h: + * ext/adaptivedemux2/mss/gstmssfragmentparser.c: + * ext/adaptivedemux2/mss/gstmssfragmentparser.h: + * ext/adaptivedemux2/mss/gstmssmanifest.c: + * ext/adaptivedemux2/mss/gstmssmanifest.h: + * ext/adaptivedemux2/plugin.c: + * ext/meson.build: + * ext/soup/gstsouploader.c: + * ext/soup/gstsouploader.h: + * meson_options.txt: + * tests/check/elements/dash_mpd.c: + * tests/check/elements/hlsdemux_m3u8.c: + * tests/check/meson.build: + New HLS, DASH and MSS adaptive demuxer elements + This provides new HLS, DASH and MSS adaptive demuxer elements as a single plugin. + These elements offer many improvements over the legacy elements. They will only + work within a streams-aware context (`urisourcebin`, `uridecodebin3`, + `decodebin3`, `playbin3`, ...). + Stream selection and buffering is handled internally, this allows them to + directly manage the elementary streams and stream selection. + Authors: + * Edward Hervey + * Jan Schmidt + * Piotrek Brzeziński + * Tim-Philipp Müller + Part-of: + +2022-04-15 09:53:19 +0800 Hou Qi + + * sys/v4l2/gstv4l2videodec.c: + v4l2videodec: copy colorimetry values to output_state caps + This is to avoid transcoding negotiation fail between v4l2h265dec + and v4l2h264enc caused by colorimetry mismatch. + Part-of: + +2022-04-14 20:10:46 +1000 Brad Hards + + * tests/interactive/equalizer-test.c: + * tests/interactive/gdkpixbufoverlay-test.c: + * tests/interactive/gdkpixbufsink-test.c: + * tests/interactive/meson.build: + * tests/interactive/test-accurate-seek.c: + * tests/interactive/test-oss4.c: + * tests/interactive/test-segment-seeks.c: + * tests/interactive/videobox-test.c: + * tests/interactive/videocrop-test.c: + * tests/interactive/videocrop2-test.c: + * tests/interactive/ximagesrc-test.c: + * tests/meson.build: + tests: rename 'icles' subdir to be more descriptive + Part-of: + +2022-04-07 11:12:47 +1000 Havard Graff + + * gst/isomp4/qtdemux.c: + qtdemux: fix leak of channel_mapping + Part-of: + +2022-04-13 10:17:15 +0800 Ming Qian + + * docs/gst_plugins_cache.json: + doc: Update cache after NV12_8L128 and NV12_10BE_8L128 addition + Part-of: + +2022-04-12 14:15:01 +0800 Ming Qian + + * sys/v4l2/gstv4l2object.c: + v4l2: Add NV12_8L128 in gst_v4l2_object_get_caps_info + It should be included in + + Part-of: + +2022-04-12 10:35:26 +0800 Ming Qian + + * sys/v4l2/gstv4l2object.c: + v4l2: Add a missed break + Fix a typo that miss a break in the switch statement + Part-of: + +2022-04-11 13:40:56 +0200 Robert Rosengren + + * gst/rtpmanager/gstrtpbin.c: + rtpbin: Fix division by zero when using ts-offset-smoothing-factor + avg_ts_offset may cause division by zero when calculating potential + overflow protection. This fix will avoid the division. + Part-of: + +2022-04-06 09:46:30 -0400 Tristan Matthews + + * gst/rtp/gstrtpopusdepay.c: + rtpopusdepay: assume 2 channels if sprop-stereo is missing + Fixes #1064 + Part-of: + +2022-03-11 15:13:21 +0100 Matthias Fuchs + + * ext/qt/gstqtsrc.cc: + * ext/qt/qtwindow.cc: + * ext/qt/qtwindow.h: + qmlglsrc: Fix deadlock when stopping + This fix makes sure that streaming thread stops waiting when the + qmlglsrc element transitions from playing to paused. + Part-of: + +2022-03-14 17:20:38 +0100 Matthias Fuchs + + * ext/qt/qtwindow.cc: + qmlglsrc: Fix missing depth & stencil buffer + Qt Quick primitives which have some kind of alpha blending + (transparency, rounded corners) are z-sorted by Qt and rendered in the + correct order. For opaque primitives Qt relies on the OpenGL depth + buffer to correctly determine the visibility of stacked elements. + This change enables the depth buffer to make sure that opaque primitives + are correctly z-stacked. + https://doc.qt.io/qt-6/qtquick-visualcanvas-scenegraph-renderer.html#opaque-primitives + Part-of: + +2022-04-06 10:14:19 +0300 Sebastian Dröge + + * gst/rtpmanager/rtpstats.h: + rtpstats: Remove non-existing twcc field docs from RTPPacketInfo and add missing field docs + Part-of: + +2022-04-05 20:28:36 +0300 Sebastian Dröge + + * gst/rtpmanager/rtpsession.h: + rtpsession: Remove unused twcc fields from the struct + Part-of: + +2022-03-30 11:06:02 -0400 Xavier Claessens + + * 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: + +2022-03-25 15:00:20 -0400 Xavier Claessens + + * ext/qt/meson.build: + * ext/soup/meson.build: + * gst/imagefreeze/meson.build: + * gst/rtsp/meson.build: + * gst/shapewipe/meson.build: + * meson.build: + * tests/check/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: + +2022-03-31 23:41:41 +0200 Thibault Saunier + + * gst/debugutils/gstnavigationtest.c: + navigation: Rename parse_state to parse_modifier_state + `parse_state` sounds a bit weird and `parse_modifier_state` is clearer. + Part-of: + +2022-03-26 01:02:02 +0530 Nirbheek Chauhan + + * ext/soup/meson.build: + meson: Add some messages when selecting libsoup + Part-of: + +2022-03-26 00:59:12 +0530 Nirbheek Chauhan + + * ext/soup/gstsouphttpsrc.c: + soup: Fix usage of symbols / defines that are gone in libsoup3 + I am not sure about the SOUP_MESSAGE_OVERWRITE_CHUNKS change, but it + was definitely already broken when using libsoup-3.0 in a shared + build. souphttpsrc probably needs to be ported from SoupMessage to + SoupServerMessage when using libsoup-3.0. + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1111 + Part-of: + +2022-03-26 00:56:04 +0530 Nirbheek Chauhan + + * ext/soup/gstsouploader.c: + * ext/soup/gstsouploader.h: + soup: Fix pre-processor macros in souploader for libsoup-3.0 + Some of the preprocessor conditionals in the loader were very broken + with libsoup-3.0 + --default-library=static + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1111 + Part-of: + +2022-03-28 18:12:03 +1100 Matthew Waters + + * sys/osxaudio/gstosxcoreaudio.c: + osxcoreaudio: fix unused-but-set warning + ../sys/osxaudio/gstosxcoreaudio.c:480:18: error: variable 'interleaved' set but not used [-Werror,-Wunused-but-set-variable] + gboolean sign, interleaved; + ^ + Part-of: + +2022-03-28 10:10:45 +0300 Sebastian Dröge + + * docs/gst_plugins_cache.json: + video-format: Move NV12_8L128 into the correct position in GST_VIDEO_FORMATS_ALL + Part-of: + +2022-03-28 13:35:17 +1100 Matthew Waters + + * gst/deinterlace/tvtime/tomsmocomp/SearchLoopTop.inc: + deinterlace: silence unused-but-set werror from imported code + Part-of: + +2022-03-28 09:50:38 +1100 Matthew Waters + + * sys/osxvideo/osxvideosink.m: + osxvideosink: fix unused-but-set-variable warning + ../sys/osxvideo/osxvideosink.m:859:11: error: variable 'data' set but not used [-Werror,-Wunused-but-set-variable] + guint8 *data, *readp, *writep; + ^ + Part-of: + +2022-03-25 11:42:03 -0300 Thibault Saunier + + * gst/debugutils/gstnavigationtest.c: + * gst/debugutils/gstnavigationtest.h: + navigationtest: Add some support for modifiers + Part-of: + +2022-03-18 16:59:32 +0000 Thibault Saunier + + * ext/gtk/gtkgstbasewidget.c: + * ext/qt/qtitem.cc: + navigation: Add support for key Modifiers in all relevant events + Part-of: + +2021-11-17 17:27:13 +1100 Matthew Waters + + * gst/rtpmanager/gstrtpptdemux.c: + rtpptdemux: fix leak of caps when ignoring a pt + Part-of: + +2022-02-23 12:53:04 +0100 Vivienne Watermeier + + * ext/qt/qtitem.cc: + * ext/qt/qtitem.h: + qt: Add touch event support + Part-of: + +2022-02-21 20:16:06 +0100 Vivienne Watermeier + + * ext/gtk/gtkgstbasewidget.c: + gtk: Add touch event support + Add a handler for touch events to gtkbasewidget. + Part-of: + +2022-02-02 15:46:57 +0100 Vivienne Watermeier + + * docs/gst_plugins_cache.json: + * gst/debugutils/gstnavigationtest.c: + * gst/debugutils/gstnavigationtest.h: + navigationtest: Display touchscreen events, log all events + Represents touchscreen events as a trail of black squares, one for each + reported position. Additionally, this adds the `display-mouse` and + `display-touch` properties to toggle visibility of mouse/touchscreen + events, since touchscreens often emulate mouse events, as well as + logging for all received navigation events. + Part-of: + +2022-02-14 16:08:23 +0100 Vivienne Watermeier + + * ext/gtk/gstgtkbasesink.c: + * ext/gtk/gtkgstbasewidget.c: + * ext/qt/gstqtsink.cc: + * ext/qt/qtitem.cc: + * ext/qt/qtitem.h: + * gst/debugutils/gstnavigationtest.c: + * gst/debugutils/gstnavseek.c: + * gst/videobox/gstvideobox.c: + * gst/videocrop/gstvideocrop.c: + * gst/videofilter/gstvideoflip.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: + +2022-03-18 15:20:49 +0100 Stéphane Cerveau + + * gst/wavparse/gstwavparse.c: + * tests/check/elements/wavparse.c: + wavparse: handle query in any parse state + In order to create the stream_id, we need to + pass the query to the default query handler. + If the parse state is different from GST_WAVPARSE_DATA + the query should be passed to the default query + handler. + Part-of: + +2020-09-13 02:17:59 +0200 Jan Alexander Steffens (heftig) + + * gst/flv/gstflvmux.c: + flvmux: Clean up aggregate's control flow + This unifies exits to go through a single out label. It mostly + simplifies how EOS is handled. + Part-of: + +2022-03-18 16:34:38 -0400 Nicolas Dufresne + + * docs/gst_plugins_cache.json: + doc: Update cache after NV12_8L128 addition + Part-of: + +2021-10-19 14:41:04 +0800 Ming Qian + + * sys/v4l2/ext/videodev2.h: + * sys/v4l2/gstv4l2object.c: + v4l2: Add NV12_8L128 and NV12_10BE_8L128 + These formats are used by i.MX 8QXP/8QM VPU. + Part-of: + +2021-09-09 23:43:33 +1000 Matthew Waters + + * docs/gst_plugins_cache.json: + * gst/rtpmanager/gstrtprtxreceive.c: + * gst/rtpmanager/gstrtprtxreceive.h: + * gst/rtpmanager/gstrtprtxsend.c: + * gst/rtpmanager/gstrtprtxsend.h: + * tests/check/elements/rtprtx.c: + rtpmanager/rtx: implement initial support for reading/writing rid extensions + Two RTP Header extensions are very relevant for rtprtxsend/receive. + 1. "urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id": will always be removed + 2. "urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id": will be written + instead of the "rtp-stream-id" header extension. + Currently it's only a simple replacement of one header extension for + another however a future change would only add the relevant extension + based on some heuristics (like, video frames only on one of the rtp key + frame buffers, or only until the rtx ssrc has been validated by the peer) + in order to reduce the required bandwidth. + Part-of: + +2021-08-25 16:59:40 +1000 Matthew Waters + + * tests/check/elements/rtphdrextsdes.c: + * tests/check/meson.build: + test: add tests for sdes-based RTP header extensions + mid, stream id and repaired stream id. + Part-of: + +2021-08-25 16:58:16 +1000 Matthew Waters + + * docs/gst_plugins_cache.json: + * gst/rtpmanager/gstrtphdrext-repairedstreamid.c: + * gst/rtpmanager/gstrtphdrext-repairedstreamid.h: + * gst/rtpmanager/gstrtphdrext-streamid.c: + * gst/rtpmanager/gstrtphdrext-streamid.h: + * gst/rtpmanager/gstrtpmanager.c: + * gst/rtpmanager/meson.build: + rtpmanager: add support for RFC8852 (rid) RTP header extensions + Both for regular RID and for adding on a repaired (RTX) etc stream. + Part-of: + +2021-08-25 16:38:44 +1000 Matthew Waters + + * docs/gst_plugins_cache.json: + * gst/rtpmanager/gstrtphdrext-mid.c: + * gst/rtpmanager/gstrtphdrext-mid.h: + * gst/rtpmanager/gstrtpmanager.c: + * gst/rtpmanager/meson.build: + rtpmanager: add support for writing RFC8843 (BUNDLE mid) RTP header extension + Part-of: + +2022-03-18 19:33:00 +0200 Sebastian Dröge + + * docs/gst_plugins_cache.json: + * gst/videocrop/gstvideocrop-private.h: + * gst/videocrop/gstvideocrop.c: + * gst/videocrop/gstvideocrop.h: + videocrop: Add support for v210 + Like UYVY and similar formats this is rounding down to the start of the + previous macro-pixel to not mix up the different components. + Part-of: + +2022-03-18 19:06:05 +0200 Sebastian Dröge + + * gst/videocrop/gstvideocrop.c: + videocrop: Use GST_ROUND_DOWN_2 instead of re-defining a local version + Part-of: + +2022-03-18 19:03:57 +0200 Sebastian Dröge + + * gst/videocrop/gstvideocrop.c: + * gst/videocrop/gstvideocrop.h: + videocrop: Rename PACKED_COMPLEX to PACKED_YVYU + It's not handling any kind of complex packed format, only formats that + are like YVYU. + Part-of: + +2022-03-18 13:42:27 +0530 Nirbheek Chauhan + + * 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: + +2022-03-15 15:44:17 +0900 Sangchul Lee + + * gst/rtpmanager/rtpjitterbuffer.c: + rtpjitterbuffer: Fix invalid memory access in rtp_jitter_buffer_pop() + Part-of: + +2022-03-14 16:19:33 +0800 Hou Qi + + * sys/v4l2/gstv4l2videodec.c: + v4l2videodec: set frame duration according to framerate + Part-of: + +2022-03-15 13:49:09 +0000 Tim-Philipp Müller + + * docs/gst_plugins_cache.json: + * gst/rtsp/gstrtspsrc.c: + * gst/rtsp/gstrtspsrc.h: + rtspsrc: proxy new "add-reference-timestamp-meta" property from rtpjitterbuffer + When syncing to an RFC7273 clock this will add the original + reconstructed reference clock timestamp to buffers in form + of a GstReferenceTimestampMeta. + This is useful when we want to process or analyse data based + on the original timestamps untainted by any local adjustments, + for example reconstruct AES67 audio streams with sample accuracy. + Part-of: + +2022-03-15 11:56:28 +0000 Tim-Philipp Müller + + * docs/gst_plugins_cache.json: + * gst/rtpmanager/gstrtpbin.c: + * gst/rtpmanager/gstrtpbin.h: + rtpbin: proxy new "add-reference-timestamp-meta" property from rtpjitterbuffer + When syncing to an RFC7273 clock this will add the original + reconstructed reference clock timestamp to buffers in form + of a GstReferenceTimestampMeta. + This is useful when we want to process or analyse data based + on the original timestamps untainted by any local adjustments, + for example reconstruct AES67 audio streams with sample accuracy. + Part-of: + +2022-03-15 01:35:17 +0000 Tim-Philipp Müller + + * docs/gst_plugins_cache.json: + * gst/rtpmanager/gstrtpjitterbuffer.c: + * gst/rtpmanager/rtpjitterbuffer.c: + * gst/rtpmanager/rtpjitterbuffer.h: + rtpjitterbuffer: add "add-reference-timestamp-meta" property + When syncing to an RFC7273 clock this will add the original + reconstructed reference clock timestamp to buffers in form + of a GstReferenceTimestampMeta. + This is useful when we want to process or analyse data based + on the original timestamps untainted by any local adjustments, + for example reconstruct AES67 audio streams with sample accuracy. + Part-of: + +2022-03-15 09:49:59 +0800 Hou Qi + + * sys/v4l2/gstv4l2videodec.c: + v4l2videodec: safely retrun from video_dec_loop with stream unlock + This is to avoid decoder hang when doing trick play between + different resolutions. + Part-of: + +2022-03-14 13:59:37 +0200 Sebastian Dröge + + * gst/rtpmanager/rtpjitterbuffer.c: + rtpjitterbuffer: Improve accuracy of RFC7273 clock time calculations + Previously the result of the calculations included inaccuracies caused + by the NTP clock estimation, which caused the timestamps to jitter + +/- 1/clockrate. + By reorganizing the calculations it is possible to get rid of this + inaccuracy and calculate deterministic and exact packet timestamps based + on the actual NTP clock as long as the estimation is not off by more + than 2**31 clockrate units. + The only remaining inaccuracy that is introduced now is caused by the + conversion from the NTP clock to the pipeline clock. + Also split up debug output, demote many messages to the trace debug + level and output more intermediate results. + Part-of: + +2022-03-14 12:29:04 +0530 Nirbheek Chauhan + + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtptwcc.c: + twcc: Add some logging to debug TWCC feedback + This should allow people to debug when TWCC feedback is not enabled + because they haven't set the extmap in the caps. + Part-of: + +2022-03-14 13:45:36 +0530 Nirbheek Chauhan + + * gst/rtpmanager/gstrtpsession.c: + twcc: Note that packet-loss-pct can count reordering as loss + This is difficult to encounter in ordinary networks, but is + encountered when using tc-netem to add random delays to packets, and + also when your UDP stream is bonded over multiple links with varying + characteristics. + Part-of: + +2017-08-11 16:33:23 +0200 Havard Graff + + * gst/rtpmanager/gstrtprtxsend.c: + * tests/check/elements/rtprtx.c: + rtprtxsend: don't require clock-rate in caps + For multiplexing, the rtpstreams you are multiplexing might not use + the same clock-rate. + Part-of: + +2016-11-04 11:47:20 +0100 Havard Graff + + * gst/rtpmanager/gstrtprtxsend.c: + * tests/check/elements/rtprtx.c: + rtprtxsend: don't start the task unless we are doing rtx + The rtxsend element can do pass-through when not enabled (no pt-map set) + and in those cases there is no point in starting an additional task + that does absolutely nothing. + Part-of: + +2016-06-27 14:28:06 +0200 Havard Graff + + * docs/gst_plugins_cache.json: + * gst/rtpmanager/gstrtprtxreceive.c: + * gst/rtpmanager/gstrtprtxreceive.h: + rtprtxreceive: add ssrc-map property + Mirroring the rtxsend, this allows the application to "pre-map" the + retransmission-ssrcs to the "real" ssrc, if this information is known. + Part-of: + +2019-09-08 15:54:08 +0200 Carlos Rafael Giani + + * ext/mpg123/gstmpg123audiodec.c: + * ext/mpg123/gstmpg123audiodec.h: + * gst/audioparsers/gstmpegaudioparse.c: + * tests/check/elements/mpg123audiodec.c: + * tests/files/sine-1009ms-1ch-32000hz-gapless-with-lame-tag.mp3: + mpg123: Add gapless playback support + Co-authored-by: Sebastian Dröge + Part-of: + +2019-09-07 19:15:42 +0200 Carlos Rafael Giani + + * gst/audioparsers/gstmpegaudioparse.c: + * gst/audioparsers/gstmpegaudioparse.h: + * tests/check/elements/mpegaudioparse.c: + mpegaudioparse: Support gapless playback + Gapless playback is handled by adjusting buffer timestamps & durations + and by adding GstAudioClippingMeta. + Support for "Frankenstein" streams (= poorly stitched together streams) + is also added, so that gapless playback support doesn't prevent those + from being properly played. + Co-authored-by: Sebastian Dröge + Part-of: + +2022-03-11 10:32:42 +0100 Jan Alexander Steffens (heftig) + + * gst/deinterlace/tvtime/scalerbob.c: + deinterlace: scalerbob: Reduce latency to 0 + We only need the current field, just like `linear`. + Part-of: + +2022-03-12 17:13:48 +0200 Vivia Nikolaidou + + * gst/deinterlace/yadif.c: + yadif: Fix CHECK macro for YUY2 format + Used to make comb artifacts for videotestsrc pattern=ball for YUY2 + format only (not AYUV). + Part-of: + +2022-03-10 17:03:45 +0900 Damian Hobson-Garcia + + * docs/gst_plugins_cache.json: + doc: New cropping parameters added to v4l2src + v4l2src add several new parameters to control cropping of + the captured video stream. Update the doc cache to reflect + this. + Part-of: + +2021-10-15 18:33:50 +0900 Damian Hobson-Garcia + + * tests/examples/v4l2/meson.build: + * tests/examples/v4l2/v4l2src-crop.c: + examples: v4l2: Add v4l2src crop example + Add a simple utility to illustrate how to set input cropping on v4l2src. + Part-of: + +2021-10-14 17:22:19 +0900 Damian Hobson-Garcia + + * sys/v4l2/gstv4l2src.c: + * sys/v4l2/gstv4l2src.h: + v4l2src: Add support for cropping at capture source input + Add properties to control input cropping in the V4L2 device. + The input cropping is applied before composing the result to the + capture buffer. By default the capture size will be set to the same + size as the crop region, but it can be scaled to a different output + frame size if supported by the V4L2 device. + If scaling is not supported, the cropped image will + be composed as is into the top-left corner of the capture buffer. + Part-of: + +2021-10-13 17:33:12 +0900 Damian Hobson-Garcia + + * sys/v4l2/gstv4l2object.c: + * sys/v4l2/gstv4l2object.h: + v4l2object: Add function to get crop regions from device + Get the current crop bounding region from the V4L2 device so + that it can be provided to applications and used to validate + crop settings. Also make the default crop region available so + that it can be used to reset the crop when appropriate. + Uses the selection API when available with fallback to the crop + API for older kernels. + Part-of: + +2021-09-30 17:56:56 +0900 Damian Hobson-Garcia + + * sys/v4l2/gstv4l2object.c: + * sys/v4l2/gstv4l2object.h: + * sys/v4l2/gstv4l2transform.c: + v4l2object: rename crop function to reflect its usage + The gst_v4l2_object_set_crop() is used for removing buffer + alignment padding. Give it a name that better reflects + that usage. This helps to distinguish from cropping of the + input image (e.g. cropping at the image sensor on a captre + device), which can be unrelated to the memory buffer padding, + especially if scaling is involved. + Part-of: + +2022-03-10 18:43:45 +0900 Sangchul Lee + + * gst/rtp/gstrtpvp8depay.c: + rtpvp8depay: Fix crash when making 'GstRTPPacketLost' custom event + This patch fixes a seg.fault in gst_structure_new() with warnings as below. + GLib-GObject-WARNING **: + ../gobject/gtype.c:4330: type id '0' is invalid + GLib-GObject-WARNING **: + can't peek value table for type '' which is not currently referenced + Part-of: + +2022-03-04 18:58:56 +0100 Tomasz Andrzejak + + * gst/rtpmanager/gstrtpbin.c: + rtpbin: allow FEC elements with Always pads + This patch enable picking up FEC decoder or enocder that have + static repair packets pad. + Part-of: + +2022-03-09 12:17:11 +0530 Nirbheek Chauhan + + * ext/soup/gstsouploader.c: + soup: Load the runtime library, not the development library + libsoup-2.4.so / libsoup-3.0.so are symlinks installed by development + packages, they are not available at runtime. + Also eliminate G_MODULE_SUFFIX since it's not useful for us, and is + actually incorrect on macOS anyway. + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1071 + Part-of: + +2019-07-10 17:21:01 +0200 Edward Hervey + + * gst/isomp4/qtdemux.c: + qtdemux: Propagate stick events downstream when creating pads + If upstream provided a stream collection event before any pads were created, + make sure it's propagated downstream when pads are created. + Part-of: + +2021-02-01 16:07:08 +0100 Havard Graff + + * gst/rtpmanager/gstrtprtxsend.c: + rtprtxsend: if no rtx is present, don't expose a rtx-ssrc in caps + The point here is that rtpsession will create a new rtpsource when + the field "rtx-ssrc" is present, and when not doing rtx, that means + a random ssrc will create a new rtpsource that will be included in RTCP + messages for the current session. + Part-of: + +2016-06-22 14:48:59 +0200 Havard Graff + + * gst/rtpmanager/gstrtprtxsend.c: + rtprtxsend: don't process or warn if no map is set + This makes it more gentle when doing "pass-through" + Part-of: + +2016-08-23 19:06:49 +0200 Mikhail Fludkov + + * gst/rtpmanager/gstrtprtxreceive.c: + * tests/check/elements/rtprtx.c: + rtprtxreceive: fix crash when RTX payload has zero length + Part-of: + +2016-06-26 22:25:46 +0200 Havard Graff + + * gst/rtpmanager/gstrtprtxreceive.c: + rtprtxreceive: allow passthrough and non-rtp buffers + To avoid mapping rtp buffers when RTX is not in use, and to not + do a full error on receiving a non-rtp buffer, since you have no control + of what a rouge sender might send you. + Part-of: + +2021-02-08 21:40:19 +0100 Havard Graff + + * gst/rtpmanager/gstrtprtxreceive.c: + * gst/rtpmanager/gstrtprtxreceive.h: + * gst/rtpmanager/gstrtprtxsend.c: + * gst/rtpmanager/gstrtprtxsend.h: + rtprtx: don't access type-system per buffer + When doing only a single stream of audio/video this hardly matters, + but when doing many at the same time, the fact that you have to get + a hold of the glib global type-system lock every time you process a buffer, + means that there is a limit to how many streams you can process in + parallel. + Luckily the fix is very simple, by doing a cast rather than a full + type-check. + Part-of: + +2020-02-10 14:37:30 +0100 Havard Graff + + * tests/check/elements/rtprtx.c: + rtprtx: signed/unsigned and style fixes + Part-of: + +2022-03-03 13:47:05 +0800 Hou Qi + + * sys/v4l2/gstv4l2bufferpool.c: + v4l2bufferpool: Fix race condition between qbuf and pool streamoff + There is a chance that pool->buffers[index] sets BUFFER_STATE_QUEUED, but + it has not been queued yet which makes pool->buffers[index] still NULL. + At this time, if pool_streamff release all buffers with BUFFER_STATE_QUEUED + state regardless of whether the buffer is NULL or not, it will cause segfault. + To fix this, also check buffer when streamoff release buffer. + Part-of: + +2022-03-03 14:22:10 +0800 Hou Qi + + * gst/flv/gstflvmux.c: + flvmux: Add protection when unref GstFlvMuxPad + This is to avoid gst_object_unref: assertion 'object != NULL' failed. + Part-of: + +2022-03-04 14:57:30 -0500 Nicolas Dufresne + + * docs/gst_plugins_cache.json: + doc: AV1 demuxers now expose their alignment + Update the chache accordingly. + Part-of: + +2022-03-02 16:31:24 -0500 Nicolas Dufresne + + * gst/matroska/matroska-demux.c: + * gst/matroska/matroska-mux.c: + matroska: Fix AV1 alignment to TU + Matroska stores AV1 in temporal unit, so that all OBU sharing the same + timestamp are put together. This was previously just assumed, which isn't + safe now that we have more alignments. + Part-of: + +2022-03-02 16:24:38 -0500 Nicolas Dufresne + + * gst/isomp4/gstqtmuxmap.c: + * gst/isomp4/qtdemux.c: + isomp4: Fix AV1 default alignment + ISOMP4 store TU (temporal units) worth of AV1. Expose this in the + caps to reduce overhead in the parser, and in the muxer to avoid + storing frames split in the wrong way. + Part-of: + +2022-02-07 17:51:39 -0500 Tristan Matthews + + * gst/matroska/matroska-mux.c: + matroskamux: allow width+height caps changes for VP8/9 + For VP8 and VP9, width+height changes are signalled inband. + Refs https://github.com/Kurento/bugtracker/issues/535 and + https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1047/diffs?commit + Part-of: + +2022-02-07 16:41:40 -0500 Tristan Matthews + + * gst/matroska/matroska-mux.c: + matroskamux: allow width + height changes for avc3|hev1 + For avc3 and hev1, the intent was to allow more flexibility for caps changes + (see https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1047/diffs?commit_id=9bd8d608d5bae27ec5ff09e733f76ca32b17420c) + however width and resolution were previously omitted. + avc3 and hev1 specifically support changing stream-parameters on the fly, whereas avc1/hvc1 disallow in-band SPS. + This commit allows for changes to width and height for these which is in line with matroskamux's behaviour prior to 1.14.0. + Practically speaking, one use case where this is commonly seen is when capturing a WebRTC stream, as the browser will adapt the resolution live. + Suggested-by: Mathieu Duponchelle "" + Part-of: + +2022-03-04 15:36:20 +0100 Jan Alexander Steffens (heftig) + + * gst/deinterlace/gstdeinterlace.c: + deinterlace: Prevent race between _set_method and latency query + It's possible that the method is being manipulated while downstream + queries our latency, leading to crashes. + Prevent that from happening. + Part-of: + +2022-03-03 23:04:36 +0530 Nirbheek Chauhan + + * ext/soup/gstsouploader.c: + soup: Fix static build with MSVC + ../ext/soup/gstsouploader.c(818): error C4098: '_soup_session_send_async': 'void' function returning a value + It's technically a false warning, but that's how MSVC works, so fix + it. + Part-of: + +2022-03-03 00:37:57 +0530 Nirbheek Chauhan + + * ext/soup/meson.build: + soup: Fix pkgconfig generation and documentation + Part-of: + +2022-03-02 23:22:39 +0530 Nirbheek Chauhan + + * ext/soup/meson.build: + soup: Fix static build when default_library=both + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1007 + Part-of: + +2022-03-02 23:11:09 +0530 Nirbheek Chauhan + + * ext/soup/meson.build: + soup: Don't error out in static build unless option is enabled + Part-of: + +2022-02-27 15:45:01 +0100 Philippe Normand + + * ext/soup/gstsouploader.c: + soup: Lookup libsoup dylib files on Apple platforms + Fixes #1007 + Part-of: + +2021-10-15 15:32:22 +0900 Damian Hobson-Garcia + + * sys/v4l2/gstv4l2object.c: + v4l2src: Reset the compose window to the default after setting format + When the size of V4L2 capture or output is changes with VIDIOC_S_FMT, + the device is only required to update the compisition window to fit + inside the new frame size. This can result in captured data only being + updated on a portion of the frame after a resize. + Update the composition window to the default value determined by the + V4L2 device driver whenever the format is changed to make sure that + all image data is composed to its full size. + Fixes #765 + Part-of: + +2022-03-01 20:59:30 +0200 Sebastian Dröge + + * gst/matroska/matroska-mux.c: + matroska-mux: Handle pixel-aspect-ratio caps field correctly when checking caps equality + Not having this field is equivalent with it being 1/1 so consider + it like that. The generic caps functions are not aware of these + semantics and would consider the caps different, causing a negotiation + failure when caps are changing from caps with to caps without or the + other way around. + Part-of: + +2022-03-01 20:56:43 +0200 Sebastian Dröge + + * gst/matroska/matroska-mux.c: + matroska-mux: Handle multiview-mode/flags caps fields correctly when checking caps equality + Not having these fields is equivalent with them being mono/0 so consider + them like that. The generic caps functions are not aware of these + semantics and would consider the caps different, causing a negotiation + failure when caps are changing from caps with to caps without or the + other way around. + Part-of: + +2022-02-27 03:17:26 +1100 Jan Schmidt + + * gst/matroska/matroska-mux.c: + matroska-mux: If a stream has a TITLE tag, use it for the name. + If a title tag is pushed to a pad, store it as the Track name. + This means that players will use it as the human readable + description of the track, instead of something generic like 'Video' + or 'Subtitle' + Part-of: + +2022-02-27 02:39:28 +1100 Jan Schmidt + + * gst/matroska/matroska-demux.c: + * gst/matroska/matroska-demux.h: + matroskademux: Don't parse Tracks element twice + If the tracks element was parsed from the SeekEntry, don't + parse it a second time and recreate tracks, as this + loses any tags that were read using the seek table. + If a genuinely new Tracks element is found, do read that + as it is needed for MSE support. + Part-of: + +2022-02-23 11:10:11 +0100 Sebastian Fricke + + * 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: + +2022-03-01 00:12:56 +0200 Vivia Nikolaidou + + * gst/deinterlace/x86/yadif.asm: + yadif.asm: Fix improper usage of LOAD macro + LOAD macro relies in m7 being zero for interleaving purposes. Using LOAD + on the m7 register makes it interleave with its new content instead of + with 0. + The effect of this bug was bobbing on some static lines that appeared + over fast-moving content. + Part-of: + +2022-03-01 00:12:33 +0200 Vivia Nikolaidou + + * gst/deinterlace/x86/yadif.asm: + yadif.asm: Typo fixes in comments + Part-of: + +2022-02-28 20:39:11 +0200 Vivia Nikolaidou + + * gst/deinterlace/yadif.c: + yadif: Fix bug in C implementation of CHECK + It was different compared to the corresponding part in both ffmpeg and + the asm implementation. Fixing this makes videotestsrc pattern=spokes + not jump at all when not using the asm optimisations. + Part-of: + +2021-10-19 16:10:06 +0800 Ming Qian + + * sys/v4l2/gstv4l2videodec.c: + * sys/v4l2/gstv4l2videodec.h: + v4l2videodec : enable resolution change + The dynamic resolution changes when + the sequence starts when the decoder detects a coded frame with one or + more of the following parameters different from those previously + established (and reflected by corresponding queries): + 1.coded resolution (OUTPUT width and height), + 2.visible resolution (selection rectangles), + 3.the minimum number of buffers needed for decoding, + 4.bit-depth of the bitstream has been changed. + Although gstreamer parser has parsed the stream resolution. + but there are some case that we need to handle resolution change event. + 1. bit-depth is different from the negotiated format. + 2. the capture buffer count can meet the demand + 3. there are some hardware limitations that the decoded resolution may + be larger than the display size. For example, the stream size is + 1920x1080, but some vpu may decode it to 1920x1088. + Part-of: + +2021-10-26 10:03:42 +0800 Ming Qian + + * sys/v4l2/gstv4l2object.c: + * sys/v4l2/gstv4l2object.h: + * sys/v4l2/gstv4l2videodec.c: + v4l2videodec : refactor the setup process of capture + v4l2videodec do some refactoring so that it can support + dynamic resolution change event. + 1.wrap the setup process of capture as a function, + as decoder need setup the capture again when + dynamic resolution change event is received. + 2.move the function "remove_padding" + Part-of: + +2022-02-22 11:18:53 +0200 Sebastian Dröge + + * gst/rtp/gstrtpac3pay.c: + * gst/rtp/gstrtpamrpay.c: + * gst/rtp/gstrtpdvpay.c: + * gst/rtp/gstrtpg723pay.c: + * gst/rtp/gstrtpg729pay.c: + * gst/rtp/gstrtpgstpay.c: + * gst/rtp/gstrtph261pay.c: + * gst/rtp/gstrtph263pay.c: + * gst/rtp/gstrtph263ppay.c: + * gst/rtp/gstrtph264pay.c: + * gst/rtp/gstrtph265pay.c: + * gst/rtp/gstrtpj2kpay.c: + * gst/rtp/gstrtpjpegpay.c: + * gst/rtp/gstrtpklvpay.c: + * gst/rtp/gstrtpmp4apay.c: + * gst/rtp/gstrtpmp4gpay.c: + * gst/rtp/gstrtpmp4vpay.c: + * gst/rtp/gstrtpmpapay.c: + * gst/rtp/gstrtpmpvpay.c: + * gst/rtp/gstrtpreddec.c: + * gst/rtp/gstrtpvp8pay.c: + * gst/rtp/gstrtpvp9pay.c: + * gst/rtp/gstrtpvrawpay.c: + * gst/rtp/rtpulpfeccommon.c: + * tests/check/elements/rtpred.c: + rtp: In payloaders map the RTP marker flag to the corresponding buffer flag + This allows downstream of a payloader to know the RTP header's marker + flag without first having to map the buffer and parse the RTP header. + Especially inside RTP header extension implementations this can be + useful to decide which packet corresponds to e.g. the last packet of a + video frame. + Part-of: + +2021-12-06 12:49:18 -0500 Joseph Donofry + + * sys/osxaudio/gstosxaudiodeviceprovider.c: + osxaudiosrc: Support a device as both input and output + osxaudiodeviceprovider now probes devices more than once to determine + if the device can function as both an input AND and output device. + Previously, if the device provider detected that a device had any output + capabilities, it was treated solely as an Audio/Sink. This causes issues + that have both input and output capabilities (for example, USB interfaces + for professional audio have both input and output channels). Such devices + are now listed as both an Audio/Sink as well as an Audio/Source. + Part-of: + +2022-02-24 20:28:23 +0530 Sanchayan Maity + + * docs/gst_plugins_cache.json: + * gst/rtp/gstrtpldacpay.c: + * gst/rtp/gstrtpldacpay.h: + rtp: ldac: Set frame count information in payload + The RTP payload seems to be required as it carries the frame count + information. Also, gst_rtp_base_payload_allocate_output_buffer had + the second argument incorrect. + Strangely some devices like Shanling MP4 and Sony XM3 would still + work without this while some like the Sony XM4 do not. + Part-of: + +2022-02-21 11:37:26 -0500 Xavier Claessens + + * ext/vpx/meson.build: + * gst/equalizer/meson.build: + * gst/isomp4/meson.build: + devenv: Add some missing GStreamer specific env variables + This should make "meson devenv" closer to what "gst-env.py" sets. + - GST_VALIDATE_SCENARIOS_PATH + - GST_VALIDATE_APPS_DIR + - GST_OMX_CONFIG_DIR + - GST_ENCODING_TARGET_PATH + - GST_PRESET_PATH + - GST_PLUGIN_SCANNER + - GST_PTP_HELPER + - _GI_OVERRIDES_PATH + Part-of: + +2022-02-25 12:44:26 +0100 Jan Alexander Steffens (heftig) + + * gst/deinterlace/tvtime/greedyh.c: + deinterlace: greedyh: Stop adding 2 to cur_field_idx + Just a simplification. + Part-of: + +2022-02-24 17:36:40 +0100 Jan Alexander Steffens (heftig) + + * gst/deinterlace/tvtime/greedyh.c: + deinterlace: greedyh: Use _plane in _packed, fix planar formats + This greatly reduces code duplication. It also exposed the cause for + planar formats not being properly deinterlaced: + The planar path was missing the initial offset adjustment that the + packed path did to `L2` and `L2P` in the case of an even field, which + caused it to select the wrong weave lines every other field. + Add those offsets in `_plane`. + Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1047 + Part-of: + +2022-02-25 12:39:31 +0100 Jan Alexander Steffens (heftig) + + * gst/deinterlace/tvtime/greedyh.c: + deinterlace: greedyh: Rename _planar_plane to _plane + As well as `i` to `plane`. + Part-of: + +2022-02-25 12:36:17 +0100 Jan Alexander Steffens (heftig) + + * gst/deinterlace/tvtime/greedyh.c: + deinterlace: greedyh: Move code from _planar into _planar_plane + Part-of: + +2022-02-25 12:30:21 +0100 Jan Alexander Steffens (heftig) + + * gst/deinterlace/tvtime/greedyh.c: + deinterlace: greedyh: Move _planar_plane upwards + In preparation of refactoring. No functional change. + Part-of: + +2022-02-22 10:13:28 +0100 Guillaume Desmottes + + * gst/rtpmanager/rtpsource.c: + rtpsource: fix rtp_source_get_nack_deadlines doc + Part-of: + +2022-02-21 13:27:06 +1100 Matthew Waters + + * gst/rtp/gstrtpulpfecenc.c: + ulpfecenc: slightly safer dispose impl + Technically dispose can be called more than once (even if gstelement is + not actually set up to do that) so need to protect against that. + Part-of: + +2022-02-21 13:24:07 +1100 Matthew Waters + + * gst/rtp/gstrtpulpfecenc.c: + ulpfecenc: fix unmatched free() call + One must always match a g_slice_new with a g_slice_free and a g_new with + a g_free. This was not the case for the internal ctx struct. + Part-of: + +2021-11-09 17:37:24 +1100 Matthew Waters + + * gst/rtp/gstrtpulpfecenc.c: + rtpulpfecenc: add some debug logging + Like, what configuration we are using or whether a fec packet is + generated. + Part-of: + +2022-02-18 15:23:13 +0530 Nirbheek Chauhan + + * gst/matroska/matroska-demux.c: + matroska-demux: Emit a warning when no codec data found + It is bad if an mkv file does not have codec data for the ProRes + variant, so we should emit a warning. ffmpeg does the same thing. + Part-of: + +2022-02-20 15:20:07 -0500 Nicolas Dufresne + + * docs/gst_plugins_cache.json: + doc: Add NV12_16L32S into the cache + Autogenerated by CI + Part-of: + +2022-01-26 10:06:50 -0500 Nicolas Dufresne + + * sys/v4l2/gstv4l2transform.c: + v4l2transform: Handle caps changes + As this element is single threaded, we only need to stop the objects to + allow changing the format again. Fixes assertion notably on shutdown and + on some other situation where the format may be set twice without + actually activating the element. + Part-of: + +2022-01-26 09:55:09 -0500 Nicolas Dufresne + + * sys/v4l2/gstv4l2object.c: + v4l2object: Avoid crash on early failure + This happens while an external error lead to an early shutdown. + Part-of: + +2022-01-25 14:34:32 -0500 Nicolas Dufresne + + * sys/v4l2/gstv4l2object.c: + video4linux2: Add MM21 support + This enables mtk-vcodec and MDP driver from mainline Linux kernel. + Part-of: + +2022-01-25 14:08:47 -0500 Nicolas Dufresne + + * sys/v4l2/gstv4l2bufferpool.c: + * sys/v4l2/gstv4l2object.c: + * sys/v4l2/gstv4l2object.h: + Port plugins to gst_video_format_info_extrapolate_stride() + This reduces code duplication and simplify addition of new + pixel formats into related plugins. + Part-of: + +2022-02-02 12:49:29 +0100 Rouven Czerwinski + + * sys/v4l2/gstv4l2tuner.c: + gstv4l2tuner: return NULL if no norm set + If the video4linux device supports norms but has no norm set, norm is + returned as an uninitialized variable after the ioctl call, leading to + gst_v4l2_tuner_get_norm_by_std_id() returning a random norm from the + supported norms. Catch this case and instead return NULL to indicate + that no norm is setup. + Part-of: + +2022-01-14 23:42:27 -0600 Tim Mooney + + * sys/v4l2/ext/types-compat.h: + v4l2: include on Illumos + Needed for _IOR/_IORW + Part-of: + +2022-02-17 17:36:22 +0100 Sebastian Wick + + * gst/matroska/matroska-demux.c: + matroska: default prores fourcc apcn + If there is no codec private data for prores it should default to Apple + ProRes 422 Standard Definition (apcn). Can be tested with + strobe_scientist.mkv from + https://developers.google.com/media/vp9/hdr-encoding + Part-of: + +2021-11-16 17:35:25 +0900 Seungha Yang + + * gst/isomp4/qtdemux.c: + qtdemux: Do not send unnecessary GAP events + Each stream may have its own segment timeline + (i.g., different segment.start or segment.base) + depending on edit-list and composition-to-decode atom. + Make sure whether time position of a stream has been actually + far behind than that of current target stream. + Part-of: + +2021-10-01 20:27:28 +0900 Seungha Yang + + * meson.build: + meson: Do hard build error for some MSVC warnings + Handle various MSVC warnings as errors for development version. + Part-of: + +2021-04-08 12:18:09 +0300 Sebastian Dröge + + * gst/isomp4/gstqtmux.c: + qtmux: Don't post an error message if pushing a sample failed with FLUSHING + Part-of: + +2022-02-11 21:35:54 +0100 Heiko Becker + + * ext/lame/meson.build: + meson: Don't build lame plugin with -Dlame=disabled + Part-of: + +2022-02-11 23:55:57 +0100 Marek Vasut + + * ext/jpeg/gstjpegdec.c: + jpegdec: Pull row_stride from GST_VIDEO_FRAME_PLANE_STRIDE() + The libjpeg-turbo internal state might not be correctly initialized for + the first frame in a stream, pull the frame stride from gstreamer frame + metadata instead, which is correct even for the first frame, and which + makes this code consistent with the surrounding lines. + Fixes: e6d83d8f96 ("jpegdec: Support libjpeg-turbo colorspace conversion") + Part-of: + +2022-02-11 23:44:24 +0100 Marek Vasut + + * ext/jpeg/gstjpegdec.c: + jpegdec: Call gst_jpeg_turbo_parse_ext_fmt_convert() before jpeg_start_decompress() + It is imperative that the libjpeg-turbo state is properly initialized + before jpeg_start_decompress() is called. Make sure cinfo.out_color_space + and cinfo.raw_data_out are set to their final values matching their peer + caps before calling jpeg_start_decompress(). + Fixes: e6d83d8f96 ("jpegdec: Support libjpeg-turbo colorspace conversion") + Part-of: + +2022-02-11 23:44:20 +0100 Marek Vasut + + * ext/jpeg/gstjpegdec.c: + jpegdec: Factor out gst_jpeg_turbo_parse_ext_fmt_convert() + Pull out peer caps checking code into gst_jpeg_turbo_parse_ext_fmt_convert(). + This code is used by libjpeg-turbo extras to determine whether peer is capable + of handling buffers into which libjpeg-turbo can directly decode data. This + kind of check must be performed before jpeg_start_decompress() is called in + gst_jpeg_dec_prepare_decode() as well as in gst_jpeg_dec_negotiate(), hence + the common code. + This commit does modify the code a little to make it easier to call from both + call sites without much duplication, hence the extra `if (*clrspc)` test. + Part-of: + +2022-02-11 23:29:27 +0100 Marek Vasut + + * ext/jpeg/gstjpegdec.c: + Revert "jpegdec: only allow conversions from RGB" + This reverts commit 2aa2477208c029b0e1b8232d69f4f99a3bf1d473. + The commit is completely wrong, libjpeg-turbo is perfectly capable + of decoding I420 (YUV) to RGB. The test case provided alongside the + aforementioned commit passes without this revert because it decodes + image of JCS_YCrCb color space, so the new `if (clrspc == JCS_RGB)` + condition is false on that image, and the libjpeg-turbo decoding + does not get used. The real bug is hidden by that commit. + The real problem is in the call order of gst_jpeg_dec_prepare_decode() + and gst_jpeg_dec_negotiate(). The gst_jpeg_dec_prepare_decode() calls + jpeg_start_decompress() which sets up internal state of the libjpeg, + however, neither cinfo.out_color_space nor cinfo.raw_data_out are + set correctly yet. Those two are set up in gst_jpeg_dec_negotiate() + which is called a bit later. Therefore, the real fix is the set up + cinfo.out_color_space and cinfo.raw_data_out before calling + jpeg_start_decompress(). This is however a separate patch. + Fixes: 2aa2477208 ("jpegdec: only allow conversions from RGB") + Part-of: + +2022-02-01 14:28:24 +0100 Bastien Nocera + + * ext/gtk/gtkgstglwidget.c: + gtk: Fix rotation not being applied when paused + The video wouldn't be redrawn immediately when a rotation was applied + but the pipeline was paused, as no new buffers were scheduled to be + displayed. + Part-of: + +2022-02-01 14:26:02 +0100 Bastien Nocera + + * ext/gtk/gtkgstbasewidget.c: + * ext/gtk/gtkgstbasewidget.h: + gtk: Add a way to queue redrawing the base GTK widget + This will be used to request a redraw of the GTK widget should the + display be changed using properties not directly handled by the base GTK + widget, but by one of its descendants. + Part-of: + +2022-01-18 17:53:30 +0100 Robert Rosengren + + * gst/rtpmanager/gstrtpbin.c: + rtpbin: Safer ts-offset-smoothing-factor calculation + Protect the ts-offset-smoothing-factor calculation from overflow. Output + warning and fallback to ts-offset if it is detected. + Part-of: + +2021-11-23 09:03:28 +0100 Robert Rosengren + + * docs/gst_plugins_cache.json: + * gst/rtpmanager/gstrtpbin.c: + * gst/rtpmanager/gstrtpbin.h: + rtpbin: add ts-offset-smoothing-factor property + Add property to set the TS offset smoothing factor and set default value + to not use it. + Part-of: + +2019-02-26 16:39:55 +0100 Danny Smith + + * gst/rtpmanager/gstrtpbin.c: + rtpbin: applied smoothing to jittery sender time-stamps + Applying a moving average filter to the timestamp offsets + for smoothing jittery and preventing aggressive skew handling. + Part-of: + +2018-05-29 16:24:02 +0200 Danny Smith + + * docs/gst_plugins_cache.json: + * gst/rtpmanager/gstrtpbin.c: + * gst/rtpmanager/gstrtpbin.h: + rtpbin: added option for setting min_ts_offset in ntp-sync mode + Constantly updating the ts_offset results in audiable glitches + when streaming audio using ntp-sync=true. By requiring a minimum + offset before updating ts_offset this can be mitigated. Added a + parameter which can be used to set min_ts_offset in ntp-sync mode. + Part-of: + +2022-02-04 11:15:47 +0000 Tim-Philipp Müller + + * docs/gst_plugins_cache.json: + * meson.build: + Back to development + Part-of: + === release 1.20.0 === 2022-02-03 19:53:25 +0000 Tim-Philipp Müller + * ChangeLog: * NEWS: * README: * RELEASE: diff --git a/subprojects/gst-plugins-ugly/ChangeLog b/subprojects/gst-plugins-ugly/ChangeLog index acaeb60e92..a3f4c40338 100644 --- a/subprojects/gst-plugins-ugly/ChangeLog +++ b/subprojects/gst-plugins-ugly/ChangeLog @@ -1,7 +1,241 @@ +2022-09-21 19:19:45 +0530 Nirbheek Chauhan + + * 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: + +2022-08-29 10:17:45 -0400 Thibault Saunier + + * docs/meson.build: + doc: Do not build plugins to build the doc + It is not actually necessary + Part-of: + +2021-03-24 14:20:18 -0500 Zebediah Figura + + * 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: + +2018-10-18 12:32:03 +0900 Yeongjin Jeong + + * ext/x264/gstx264enc.c: + x264enc: Print full option-string applied to x264_encoder in debug log + x264 encoder transfers all options applied to the encoder + to the SEI payload when the headers(SPS, PPS) is requested. + Part-of: + +2018-10-17 23:38:22 +0900 Yeongjin Jeong + + * ext/x264/gstx264enc.c: + x264enc: Don't assume the order of nal unit + Just for extra safety, let's check the index of the nal unit + through the enum value of the nal type provided by x264. + Part-of: + +2022-09-01 15:11:31 -0400 Thibault Saunier + + * ext/a52dec/meson.build: + * ext/amrnb/meson.build: + * ext/amrwbdec/meson.build: + * ext/cdio/meson.build: + * ext/dvdread/meson.build: + * ext/mpeg2dec/meson.build: + * ext/sidplay/meson.build: + * ext/x264/meson.build: + * gst/asfdemux/meson.build: + * gst/dvdlpcmdec/meson.build: + * gst/dvdsub/meson.build: + * gst/realmedia/meson.build: + * gst/xingmux/meson.build: + * meson.build: + meson: Call pkgconfig.generate in the loop where we declare plugins dependencies + Removing some copy pasted code + Part-of: + +2022-09-01 11:51:48 -0400 Thibault Saunier + + * docs/meson.build: + meson: Namespace the plugins_doc_dep/libraries variables + Part-of: + +2022-08-31 18:44:14 -0400 Thibault Saunier + + * meson.build: + meson: Rename plugins list and make them "dependency" objects + Part-of: + +2022-05-31 15:18:03 +0200 Stéphane Cerveau + + * docs/meson.build: + * meson.build: + docs: disable in static build + Following gst-plugins-base, disable docs if static_build + in: + - gstreamer + - gst-plugins-good + - gst-plugins-ugly + - gst-libav + - gstreamer-vaapi + Part-of: + +2022-06-29 10:55:13 +0100 Tim-Philipp Müller + + * 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: + +2022-06-25 19:50:10 +0100 Tim-Philipp Müller + + * 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: + +2022-04-06 12:56:30 +0100 Tim-Philipp Müller + + * meson.build: + Bump GLib requirement to >= 2.62 + Can't require 2.64 yet because of + https://gitlab.freedesktop.org/gstreamer/cerbero/-/issues/323 + Part-of: + +2022-03-25 10:18:34 -0400 Xavier Claessens + + * 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: + +2022-03-25 10:20:24 -0400 Xavier Claessens + + * gst-libs/gst/gettext.h: + * gst-libs/gst/gst-i18n-plugin.h: + Delete unused i18n headers + Part-of: + +2022-03-25 09:59:23 -0400 Xavier Claessens + + * ext/cdio/gstcdiocddasrc.c: + * ext/dvdread/dvdreadsrc.c: + * gst/asfdemux/gstasf.c: + * gst/asfdemux/gstasfdemux.c: + * gst/asfdemux/gstasfelement.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: + +2022-04-15 16:53:25 +0300 Sebastian Dröge + + * ext/x264/gstx264enc.c: + x264enc: Don't try to fixate ANY allowed caps + Instead fall back to the template caps. + Part-of: + +2022-03-30 11:06:02 -0400 Xavier Claessens + + * 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: + +2022-03-25 15:00:20 -0400 Xavier Claessens + + * ext/dvdread/meson.build: + * 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: + +2022-03-18 13:42:27 +0530 Nirbheek Chauhan + + * 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: + +2022-02-23 11:10:11 +0100 Sebastian Fricke + + * 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: + +2022-02-21 11:37:26 -0500 Xavier Claessens + + * ext/amrnb/meson.build: + * ext/x264/meson.build: + devenv: Add some missing GStreamer specific env variables + This should make "meson devenv" closer to what "gst-env.py" sets. + - GST_VALIDATE_SCENARIOS_PATH + - GST_VALIDATE_APPS_DIR + - GST_OMX_CONFIG_DIR + - GST_ENCODING_TARGET_PATH + - GST_PRESET_PATH + - GST_PLUGIN_SCANNER + - GST_PTP_HELPER + - _GI_OVERRIDES_PATH + Part-of: + +2022-02-21 23:29:23 +0100 Ruben Gonzalez + + * docs/gst_plugins_cache.json: + * ext/x264/gstx264enc.c: + x264enc: Update long-name and description + Update x264enc long-name to be more than just the name. Then the + description also was updated to be longer than the long-name, and + similar to the plugin description. + Finally, as I am here, H264 was replaced by H.264 and x264 is only a + plugin (not plugins). + Part-of: + +2021-10-01 20:27:28 +0900 Seungha Yang + + * meson.build: + meson: Do hard build error for some MSVC warnings + Handle various MSVC warnings as errors for development version. + Part-of: + +2022-02-04 11:15:47 +0000 Tim-Philipp Müller + + * meson.build: + Back to development + Part-of: + === release 1.20.0 === 2022-02-03 19:53:25 +0000 Tim-Philipp Müller + * ChangeLog: * NEWS: * README: * RELEASE: diff --git a/subprojects/gst-python/ChangeLog b/subprojects/gst-python/ChangeLog index 47648ab63d..3d9374bc13 100644 --- a/subprojects/gst-python/ChangeLog +++ b/subprojects/gst-python/ChangeLog @@ -1,7 +1,177 @@ +2022-09-21 19:19:45 +0530 Nirbheek Chauhan + + * 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: + +2022-09-12 09:46:43 -0400 Xavier Claessens + + * gi/overrides/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: + +2022-09-01 15:11:31 -0400 Thibault Saunier + + * plugin/meson.build: + meson: Call pkgconfig.generate in the loop where we declare plugins dependencies + Removing some copy pasted code + Part-of: + +2022-06-28 16:38:09 -0400 Thibault Saunier + + * examples/plugins/python/py_audiotestsrc.py: + python: Fix the audiotestsrc example + Since 830d1595b94ee855b664b2101f0832fbd0181b9c AudioInfo::from_caps has been hidden in python + Part-of: + +2022-06-28 16:35:58 -0400 Thibault Saunier + + * examples/plugins/python/audioplot.py: + * examples/plugins/python/exampleTransform.py: + * examples/plugins/python/identity.py: + * examples/plugins/python/mixer.py: + * examples/plugins/python/py_audiotestsrc.py: + * examples/plugins/python/sinkelement.py: + * gi/overrides/Gst.py: + python: Add a Gst.init_python function to be called from plugins + Plugins know that they will be initialized after Gst was initialized + so they can call the initialization function dedicated for the python + bindings + Part-of: + +2022-06-28 11:02:37 -0400 Thibault Saunier + + * gi/overrides/Gst.py: + python: Do not call gst_init when it is already is_initialized + GStreamer plugins written in python need to call `Gst.init` to ensure + that GStreamer is initialized so when loading a python plugin, we might + be recursively calling `gst_init` which is not a good idea. + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/940 + Part-of: + +2022-04-21 09:51:50 +0200 Stéphane Cerveau + + * plugin/gstpythonplugin.c: + pythonplugin: fails silently on plugin issue + If a gst python plugin fails to load, the meta plugin + should continue to try loading the following. + If no plugin can be loaded, the meta plugin should + not be blacklisted by returning false. + Part-of: + +2022-04-15 18:58:49 +0200 Fabrice Fontaine + + * meson.build: + gst-python: fix build on systems without C++ compiler + Fix the following build failure on systems without C++ compiler: + The following exception(s) were encountered: + Running "/home/autobuild/autobuild/instance-0/output-1/host/bin/i686-buildroot-linux-gnu-g++ --version" gave "[Errno 2] No such file or directory: '/home/autobuild/autobuild/instance-0/output-1/host/bin/i686-buildroot-linux-gnu-g++'" + Fixes: + - http://autobuild.buildroot.org/results/eebf65036f79d21d347714d62afecd0108393308 + Part-of: + +2022-03-30 11:06:02 -0400 Xavier Claessens + + * 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: + +2022-03-25 15:00:20 -0400 Xavier Claessens + + * plugin/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: + +2022-03-29 18:43:56 +0200 Thibault Saunier + + * testsuite/python.supp: + python: Add a suppression file for a leak in PyGObject + And ensure that the CI runs GES valgrind test when we change the + overrides as many GES tests are implemented in python + Proper fix is at: https://gitlab.gnome.org/GNOME/pygobject/-/merge_requests/204 + Part-of: + +2021-12-06 19:27:24 -0300 Thibault Saunier + + * examples/plugins/python/sinkelement.py: + * gi/overrides/Gst.py: + * gi/overrides/gstmodule.c: + python: Add support for the GstURIHandlerInterface + Part-of: + +2022-03-18 13:42:27 +0530 Nirbheek Chauhan + + * 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: + +2022-03-11 18:08:14 -0500 Xavier Claessens + + * gi/overrides/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: + +2022-02-04 15:53:45 +0100 Mathieu Duponchelle + + * gi/overrides/gstmodule.c: + gst-python: gstmodule.c: fix build with 3.11 + https://docs.python.org/fr/3.10/whatsnew/3.10.html + Part-of: + +2022-02-21 11:37:26 -0500 Xavier Claessens + + * gi/overrides/meson.build: + devenv: Add some missing GStreamer specific env variables + This should make "meson devenv" closer to what "gst-env.py" sets. + - GST_VALIDATE_SCENARIOS_PATH + - GST_VALIDATE_APPS_DIR + - GST_OMX_CONFIG_DIR + - GST_ENCODING_TARGET_PATH + - GST_PRESET_PATH + - GST_PLUGIN_SCANNER + - GST_PTP_HELPER + - _GI_OVERRIDES_PATH + Part-of: + +2022-02-04 11:15:47 +0000 Tim-Philipp Müller + + * meson.build: + Back to development + Part-of: + === release 1.20.0 === 2022-02-03 19:53:25 +0000 Tim-Philipp Müller + * ChangeLog: * NEWS: * RELEASE: * gst-python.doap: diff --git a/subprojects/gst-rtsp-server/ChangeLog b/subprojects/gst-rtsp-server/ChangeLog index df039f6d6d..274071d28e 100644 --- a/subprojects/gst-rtsp-server/ChangeLog +++ b/subprojects/gst-rtsp-server/ChangeLog @@ -1,7 +1,274 @@ +2022-09-21 19:19:45 +0530 Nirbheek Chauhan + + * 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: + +2021-03-24 14:20:18 -0500 Zebediah Figura + + * 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: + +2022-09-05 13:28:18 +1200 Chris Wiggins + + * gst/rtsp-server/rtsp-context.c: + * gst/rtsp-server/rtsp-context.h: + rtsp-server: context: Add method to set the RTSPToken on some RTSPContext + Fixes #1399. + Part-of: + +2022-08-24 19:50:19 +0800 Bruce Liang + + * gst/rtsp-server/rtsp-server-internal.h: + * gst/rtsp-server/rtsp-stream-transport.c: + * gst/rtsp-server/rtsp-stream.c: + gst-rtsp-server: Fix pushing backlog to client + Check back pressure of a stream transport before popping buffer from its backlog. + If the stream transport is not experiencing back pressure, the buffer can be popped from backlog and pushed to client. + Fixes:#1298 + Part-of: + +2022-09-02 16:31:54 +0300 Sebastian Dröge + + * gst/rtsp-server/rtsp-stream.c: + rtsp-server: stream: Don't loop forever if binding to the multicast address fails + The address/port is pre-defined by the caller of the function, so + retrying is only going to loop forever. + Ideally the multicast address should be checked after allocating but + this doesn't happen currently, so it's better to error out cleanly then + to loop forever trying the same address. + Part-of: + +2022-09-01 15:11:31 -0400 Thibault Saunier + + * gst/rtsp-sink/meson.build: + * meson.build: + meson: Call pkgconfig.generate in the loop where we declare plugins dependencies + Removing some copy pasted code + Part-of: + +2022-09-01 11:51:48 -0400 Thibault Saunier + + * docs/meson.build: + * gst/rtsp-server/meson.build: + * meson.build: + meson: Namespace the plugins_doc_dep/libraries variables + Part-of: + +2022-08-31 18:44:14 -0400 Thibault Saunier + + * meson.build: + meson: Rename plugins list and make them "dependency" objects + Part-of: + +2022-05-25 18:40:30 +0530 Nirbheek Chauhan + + * gst/rtsp-sink/gstrtspclientsink.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: + +2022-07-12 16:58:00 +0800 Bruce Liang + + * gst/rtsp-server/rtsp-client.c: + rtsp-client: Fix url for generating key in media factory + The mount point at / can be accessed by both the URL forms rtsp://: and rtsp://:/. + To make media factory generating the same key for both the URL forms, the url sent to gst_rtsp_media_factory_construct() needs to be normalized first. + This commit creates a new GstRTSPUrl as the normalized url to send to gst_rtsp_media_factory_construct(). + Fixes:https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1297 + Part-of: + +2022-06-29 10:55:13 +0100 Tim-Philipp Müller + + * 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: + +2022-06-14 16:18:35 +0100 Tim-Philipp Müller + + * docs/meson.build: + * docs/plugins/gst_plugins_cache.json: + * docs/plugins/index.md: + * docs/plugins/sitemap.txt: + docs: make sure rtspclientsink plugin docs index page is called index.html + .. instead of plugin-index.html. + Part-of: + +2022-04-06 12:56:30 +0100 Tim-Philipp Müller + + * meson.build: + Bump GLib requirement to >= 2.62 + Can't require 2.64 yet because of + https://gitlab.freedesktop.org/gstreamer/cerbero/-/issues/323 + Part-of: + +2022-05-16 18:06:16 +0200 Patricia Muscalu + + * gst/rtsp-server/rtsp-media.c: + rtsp-media: Correct logic on GstRTSPStreamBlocking message reception + We must take into account the receiving streams as well when calculating + the expected number of the received GstRTSPStreamBlocking messages. + Part-of: + +2022-04-27 01:13:11 +0200 Mathieu Duponchelle + + * tests/check/gst/onvif.c: + tests/onvif: improve robustness + The previous iteration of the code was inferring the type of the + frame by looking at the overall size of the gst-payloaded packet. + It is more robust to actually parse the payload and look at the + actual data buffers it contains. + Part-of: + +2022-04-27 01:10:46 +0200 Mathieu Duponchelle + + * tests/check/gst/onvif.c: + tests/onvif: don't push buffers outside segment + segment->stop is exclusive, so in reverse playback mode we do not + need to output a buffer at that position as it will simply get + clipped in basesink. + Part-of: + +2022-02-15 13:39:43 +0000 Pierre Bourré + + * gst/rtsp-sink/gstrtspclientsink.c: + rtspclientsink: fix possible shutdown deadlock collect_streams() + Part-of: + +2022-04-07 19:14:27 +0300 Sebastian Dröge + + * gst/rtsp-server/rtsp-sdp.c: + rtsp-server: Add RFC5576 Source-specific media attribute to the SDP media for signalling the CNAME + Part-of: + +2022-04-13 14:34:57 +0200 Marc Leeman + + * gst/rtsp-server/rtsp-stream.c: + gst-rtsp-server: minor spelling fixes + Part-of: + +2022-03-25 15:00:20 -0400 Xavier Claessens + + * examples/meson.build: + * 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: + +2022-03-28 21:03:16 +1100 Matthew Waters + + * gst/rtsp-server/rtsp-stream.c: + rtsp-stream: remove unused variable: + Fixes: + ../gst/rtsp-server/rtsp-stream.c:2670:9: error: variable 'n_messages' set but not used [-Werror,-Wunused-but-set-variable] + guint n_messages = 0; + ^ + Part-of: + +2022-03-18 13:42:27 +0530 Nirbheek Chauhan + + * 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: + +2022-02-23 17:39:18 +0100 Vivienne Watermeier + + * gst/rtsp-server/rtsp-token.c: + documentation: improve misleading wording + The documentation for several gst_*_writable_structure functions stated + that they would never return NULL, without making clear that the passed + object is required to be writable. This changes the wording in those + cases to make that requirement more clear. + Part-of: + +2022-02-10 08:01:02 +0100 Branko Subasic + + * examples/test-onvif-server.c: + * tests/check/gst/onvif.c: + rtponviftimestamp: add support for using reference timestamps + Make it posible to configure the element to obtain the timestamps from + reference timestamp meta data instead of using the ntp-offset property, + or estimating its own offset. Currently the only time format supported + is "timestamp/x-unix", i.e. UTC time expressed in the unix time epoch. + In addition the custom event GstNtpOffset has been renamed to + GstOnvifTimestamp, to reflect that it is not necessarily used to convey + the ntp-offset. As a consequence we had to modify a couple of files in + the rtsp-server as well. + Fixes #984 + Part-of: + +2022-02-18 16:05:53 +0100 Branko Subasic + + * tests/check/gst/onvif.c: + * tests/check/gst/rtspserver.c: + * tests/check/gst/stream.c: + gst-rtsp-server: Plug a few memory leaks in tests + Found and fixed a few memory leaks in the gst_rtspserver, gst_onvif and + gst_stream tests by running the tests in valgrind. + Part-of: + +2022-03-07 09:14:46 +0100 Branko Subasic + + * gst/rtsp-server/rtsp-client.c: + gst-rtsp-server: fix race in rtsp-client + When tunneling over HTTP, if connection on the second channel happens + before the control timer is created we may trigger an assert in + rtsp_ctrl_timeout_remove(). Avoid that by taking the priv->lock before + attaching the client thread to the context. + Fixes #1025 + Part-of: + +2022-02-04 11:15:47 +0000 Tim-Philipp Müller + + * docs/gst_plugins_cache.json: + * meson.build: + Back to development + Part-of: + === release 1.20.0 === 2022-02-03 19:53:25 +0000 Tim-Philipp Müller + * ChangeLog: * NEWS: * RELEASE: * docs/gst_plugins_cache.json: diff --git a/subprojects/gstreamer-vaapi/ChangeLog b/subprojects/gstreamer-vaapi/ChangeLog index 25f336e04f..dbd32b0131 100644 --- a/subprojects/gstreamer-vaapi/ChangeLog +++ b/subprojects/gstreamer-vaapi/ChangeLog @@ -1,7 +1,254 @@ +2022-09-21 19:19:45 +0530 Nirbheek Chauhan + + * 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: + +2022-09-01 15:11:31 -0400 Thibault Saunier + + * meson.build: + meson: Call pkgconfig.generate in the loop where we declare plugins dependencies + Removing some copy pasted code + Part-of: + +2022-09-01 11:51:48 -0400 Thibault Saunier + + * docs/meson.build: + meson: Namespace the plugins_doc_dep/libraries variables + Part-of: + +2022-08-31 18:44:14 -0400 Thibault Saunier + + * meson.build: + meson: Rename plugins list and make them "dependency" objects + Part-of: + +2022-05-31 15:18:03 +0200 Stéphane Cerveau + + * docs/meson.build: + * meson.build: + docs: disable in static build + Following gst-plugins-base, disable docs if static_build + in: + - gstreamer + - gst-plugins-good + - gst-plugins-ugly + - gst-libav + - gstreamer-vaapi + Part-of: + +2022-08-11 21:22:12 +0200 Víctor Manuel Jáquez Leal + + * gst-libs/gst/vaapi/gstvaapidisplay.c: + * gst/vaapi/gstvaapi.c: + * gst/vaapi/gstvaapidecode.c: + vaapi: plugin: Handle when no encoders/decoders available. + Nouveau driver currently only exposes postproc entry. But + vaapidecodebin is registered independent if there are decoders or not, + exposing a segmentation fault. + This patch removes the encoder/decoder/codec arrays if no entries are + found, and if no decoders are found vaapidecodebin is not + registered. Also for vaapipostproc if no postproc entry is found. + Also, if general decoder, used by vaapidecodebin, doesn't have a sink + pad string, don't register the glib type. + Fixes: #1349 + Part-of: + +2022-07-27 08:45:45 -0400 U. Artie Eoff + + * gst-libs/gst/vaapi/gstvaapidecoder_h265.c: + vaapi: h265dec: avoid possible NULL deref + Check "pi" before attempting to dereference it. + Captured by static analysis. + Part-of: + +2022-07-26 12:12:50 -0400 Nicolas Dufresne + + * gst-libs/gst/vaapi/gstvaapidecoder_h265.c: + vaapi: h264dec: Remove dead code + Part-of: + +2022-07-26 12:22:10 -0400 Nicolas Dufresne + + * gst-libs/gst/vaapi/gstvaapidecoder_h265.c: + vaapi: h265dec: Refresh our sps/pps copy + The decoder uses a copy of the SPS/PPS. Since + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2575 + the SPS/PPS is updated when the slice header is parsed. As a side + effect, the H265 decoder was using an partially filled copy. + Fixes: 5ae05bb42a ("codecparsers: Defering computation of pps and sps fields") + Fixes: #1343 + Part-of: + +2022-06-09 20:00:35 +0800 He Junyan + + * gst-libs/gst/vaapi/gstvaapifilter.c: + vaapi: Do not disable the whole vpp when some va operations not available. + Part-of: + +2022-05-26 12:08:44 -0400 U. Artie Eoff + + * tests/check/elements/vaapioverlay.c: + tests: vaapi: remove unused header + Part-of: + +2022-05-26 12:06:43 -0400 U. Artie Eoff + + * tests/check/elements/vaapioverlay.c: + tests: vaapi: fix memleak in vaapioverlay test + Need to unmap the frame to ensure vaapioverlay can destruct/dispose. + Part-of: + +2022-04-12 15:23:08 +0300 Sebastian Dröge + + * gst-libs/gst/vaapi/gstvaapivalue.c: + Fix `transfer` gobject-introspection annotation typos + Part-of: + +2022-03-30 11:06:02 -0400 Xavier Claessens + + * 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: + +2022-03-25 15:00:20 -0400 Xavier Claessens + + * gst-libs/gst/vaapi/gstvaapifilter.c: + * 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: + +2021-09-11 12:17:56 -0300 Thibault Saunier + + * docs/gst_plugins_cache.json: + * meson_options.txt: + tools: Add support for building gstreamer tools against gst-full + Part-of: + +2022-03-18 16:59:32 +0000 Thibault Saunier + + * tests/check/elements/vaapipostproc.c: + navigation: Add support for key Modifiers in all relevant events + Part-of: + +2022-02-14 16:08:23 +0100 Vivienne Watermeier + + * gst/vaapi/gstvaapipostproc.c: + * gst/vaapi/gstvaapisink.c: + * tests/check/elements/vaapipostproc.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: + +2022-03-16 13:17:21 -0400 Nicolas Dufresne + + * gst-libs/gst/vaapi/gstvaapidecoder_av1.c: + codecs: av1: Fix state when we show existing keyframe + Showing existing keyframe have special meaning in AV1. All the references + frame will be refreshed with the original keyframe information. The refresh + process (7.20) is implemented by saving data from the frame_header into the + state. To fix this special case, load all the relevant information into the + frame_header. + As there is nothing happening in between this and the loading of the key-frame + into the state, this patch also remove the separate API function, using it + internally instead. + Fixes #1090 + Part-of: + +2022-03-18 13:42:27 +0530 Nirbheek Chauhan + + * 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: + +2022-03-08 14:54:34 +0800 GuYanjie + + * gst-libs/gst/vaapi/gstvaapidecoder_h265.c: + vaapih265dec: fixed st_rps_bits setting in h265 decoding. + According to va_dec_hevc.h, pic_param->st_rps_bits should be set + for accelorater to skip parsing the *short_term_ref_pic_set + (num_short_term_ref_pic_sets) structure. + Also modified fill_picture to get parser info as a parameter, + in order to get slide_hdr->short_term_ref_pic_set_size. + Part-of: + +2021-11-19 18:47:24 -0800 Haihao Xiang + + * gst-libs/gst/vaapi/gstvaapiblend.c: + * gst/vaapi/gstvaapioverlay.c: + * gst/vaapi/gstvaapioverlay.h: + vaapioverlay: inline sinkpad scaling support + Often, users will need to scale inputs (e.g. + with vaapipostproc) before they are submitted + to the vaapioverlay. However, this results in + multiple VPP passes/operations in the pipeline + which creates unnecessary process overhead. + This change allows for inputs to be submitted + at original scale to vaapioverlay with per-sinkpad + scale dimensions specified so they can be scaled + and blended/composited in a single VPP pass/operation + to avoid the unnecessary process overhead. + Part-of: + +2021-11-19 14:46:34 -0800 U. Artie Eoff + + * gst-libs/gst/vaapi/gstvaapiblend.c: + vaapioverlay: use vpp blend state iif using alpha + Don't set VAAPI vpp blend flags if alpha == 1.0, + i.e. fully opaque. This can avoid extra processing + overhead on some drivers that apply blending + unconditionally when flags are present, even if the + end result is the same without blend flags (i.e. all + opaque alpha channels). + Part-of: + +2022-02-09 06:01:34 +0100 Víctor Manuel Jáquez Leal + + * meson.build: + * meson_options.txt: + vaapi: Use meson's features for option selection. + Modernize option selection, so if a required dependency is missing, + produce a meaningful error message. + Part-of: + +2021-09-30 17:42:19 +0200 Víctor Manuel Jáquez Leal + + * meson.build: + build: Add libva dependency fallback. + Then libva can be subproject and used by either gstreamer-vaapi, + va and msdk in gst-plugins-bad. + Part-of: + +2022-02-04 11:15:47 +0000 Tim-Philipp Müller + + * meson.build: + Back to development + Part-of: + === release 1.20.0 === 2022-02-03 19:53:25 +0000 Tim-Philipp Müller + * ChangeLog: * NEWS: * RELEASE: * gstreamer-vaapi.doap: diff --git a/subprojects/gstreamer/ChangeLog b/subprojects/gstreamer/ChangeLog index da6d04bd92..7da9470ec7 100644 --- a/subprojects/gstreamer/ChangeLog +++ b/subprojects/gstreamer/ChangeLog @@ -1,7 +1,1310 @@ +2022-10-03 11:16:25 +0200 Edward Hervey + + * plugins/elements/gstqueue2.c: + queue2: Hold the lock when modifying sinkresult + As it's done elsewhere. Avoids a potential race of the field being modified in + the meantime. + Part-of: + +2018-03-28 17:54:15 +0200 Philipp Zabel + + * gst/gstbuffer.c: + * gst/gstmeta.c: + * gst/gstmeta.h: + * libs/gst/base/gstadapter.c: + * libs/gst/base/gstbasetransform.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: + +2022-09-26 14:17:18 +0300 Sebastian Dröge + + * gst/gsturi.c: + gsturi: When setting the same string again do nothing + Otherwise code like gst_uri_set_host(uri, gst_uri_get_host(uri)) would + first free the string, then create a copy of the freed string and then + assigned that. + Part-of: + +2022-09-15 16:22:23 +0200 Edward Hervey + + * libs/gst/base/gstbasetransform.c: + basetransform: Avoid useless codepath + If QoS is disabled, skip the whole computation (avoids calculating values which + won't be needed) + Part-of: + +2022-09-21 19:19:45 +0530 Nirbheek Chauhan + + * 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: + +2022-09-12 09:46:43 -0400 Xavier Claessens + + * data/bash-completion/helpers/meson.build: + * data/meson.build: + * libs/gst/helpers/meson.build: + * tests/validate/meson.build: + * 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: + +2022-08-31 18:08:08 +0200 Paweł Stawicki + + * plugins/elements/gstqueue2.c: + queue2: Fix deadlock when deactivate is called in pull mode + check is flush was called before waiting on condition + Part-of: + +2022-09-15 16:23:16 +0200 Edward Hervey + + * libs/gst/base/gstbaseparse.c: + baseparse: If available, return average bitrate upstream + Helps improve queue2 buffering for single stream playback (ex: FLAC or mp3) + Part-of: + +2022-08-26 08:43:34 -0400 Thibault Saunier + + * gst/gstelement.c: + Build documentation for rust plugins + - Update the docker image we use, starting using the standard one adding + `gtk4-doc` as required by rust plugins + - Update the plugins_doc_caches as required, some more plugins are built + with the new image + - Install ninja from pip as the version from F31 is too old + - Avoid buildings all GSreamer plugins when building the doc as it takes + time and resources for no good reason + - Stop linking to `GInstanceInitFunc` as it is not present in latest GLib + documentation, leading to warnings in hotdoc. + Part-of: + +2022-08-26 08:39:16 -0400 Thibault Saunier + + * docs/gst-hotdoc-plugins-scanner.c: + docs: plugin-scanner: Minor debug enhancement + Part-of: + +2021-01-28 08:40:56 +0200 Jordan Petridis + + * gst/gst_private.h: + * gst/gstelement.c: + * gst/gstinfo.c: + gstinfo: remove the vasprintf fallback + We are always building our printf implementation, even when + GST_DEBUG is disabled, since we are exposing api (gst_print*) + that's dependant on our printf behavior. + We don't need to keep __gst_info_fallback_vasprintf around anymore. + Close #640 + Part-of: + +2021-03-24 14:20:18 -0500 Zebediah Figura + + * 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: + +2021-04-19 10:49:42 -0400 Doug Nazar + + * gst/gstregistry.c: + registry: skip integration testsuite directory during plugin scan + When using an uninstalled development environment and running the + validation tests, the number of log files can grow substantially, + slowing down startup. + Part-of: + +2022-08-30 10:48:18 -0400 Xavier Claessens + + * gst/gstbufferpool.c: + doc: Clarify that gst_buffer_pool_acquire_buffer() blocks by default + Part-of: + +2022-09-01 15:11:31 -0400 Thibault Saunier + + * meson.build: + * plugins/elements/meson.build: + * plugins/tracers/meson.build: + meson: Call pkgconfig.generate in the loop where we declare plugins dependencies + Removing some copy pasted code + Part-of: + +2022-09-01 11:51:48 -0400 Thibault Saunier + + * docs/meson.build: + * gst/meson.build: + * libs/gst/base/meson.build: + * libs/gst/check/meson.build: + * libs/gst/controller/meson.build: + * libs/gst/net/meson.build: + * meson.build: + meson: Namespace the plugins_doc_dep/libraries variables + Part-of: + +2022-08-31 18:44:14 -0400 Thibault Saunier + + * meson.build: + meson: Rename plugins list and make them "dependency" objects + Part-of: + +2022-08-31 14:23:59 +0200 Martin Dørum + + * gst/gstpluginloader.c: + gstpluginloader: Don't hang on short reads/writes + If read_one or write_one was called but the stream closed before it could + read/write a whole packet, read_one/write_one would hang indefinitely, + consuming 100% CPU. This commit fixes that by treating a short read/write + as an error. + Part-of: + +2022-08-31 09:15:08 -0400 Xavier Claessens + + * gst/gst.c: + gst_init: Initialize static plugins just before dynamic plugins + All plugins needs to be initialized after `gst_initialized = TRUE;` + otherwise they could complain that gst_init() has not been called. + Part-of: + +2022-05-31 15:18:03 +0200 Stéphane Cerveau + + * docs/meson.build: + docs: disable in static build + Following gst-plugins-base, disable docs if static_build + in: + - gstreamer + - gst-plugins-good + - gst-plugins-ugly + - gst-libav + - gstreamer-vaapi + Part-of: + +2022-08-24 12:42:12 -0400 Olivier Crête + + * gst/gstvalue.c: + value: Use g_critical() when trying to serialize things that can't be + Part-of: + +2022-08-01 14:00:20 -0400 Olivier Crête + + * gst/gstvalue.c: + * tests/check/gst/gstvalue.c: + gstvalue: Don't loop forever when serializing invalid flag + The serialization code would loop forever if an invalid flag was sent into it. + With unit test for this corner case. + Part-of: + +2022-08-23 19:40:54 +0300 Sebastian Dröge + + * gst/gstbin.c: + bin: Don't propagate state change errors of elements in locked state + Theoretically having elements in locked state should not have any effect + at all when the surrounding bin is doing state changes. However + previously a state change error of a locked element would cause the + bin's state change to also fail, which is clearly not intended. + State change failures of locked elements are to be handled by whoever + set the element to locked state. By always returning them here it is + impossible for the owner of the element to handle state change failures + gracefully without potentially affecting the whole pipeline's state + changes. + Non-failure returns are still returned as-is as the distinction between + ASYNC/NO_PREROLL/SUCCESS has big consequences on the state changes of + the bin and overall pipeline. Theoretically SUCCESS should also be + returned in all cases but I can't estimate the effects this would have + on the overall pipeline. + Part-of: + +2022-08-17 16:27:36 +0300 Sebastian Dröge + + * libs/gst/base/gstaggregator.c: + aggregator: Improve debug output to better understand why pads are not ready or can't accept more data + Part-of: + +2022-08-15 20:07:09 +0530 Nirbheek Chauhan + + * gst/gstmeta.c: + * gst/gstmeta.h: + * tests/check/gst/gstmeta.c: + meta: Set the parent refcount of the GstStructure correctly + The parent refcount is of the *transformed* buffer, not the input + buffer. + Also update the docs to clarify that @transbuf is the transformed + buffer, and not the buffer on which a transformation is being + performed. + Due to this bug, modifying the structure of a meta that has been + copied to another buffer fails with: + gst_structure_set: assertion 'IS_MUTABLE (structure) || field == NULL' failed + Add a test for the same. + Part-of: + +2022-07-09 17:04:07 +0300 Sebastian Dröge + + * gst/gst.c: + gst: Protect initialization state with a recursive mutex. + Otherwise a gst_init() call from a plugin would deadlock if the plugin + is loaded as part of registry updating. + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/940 + Part-of: + +2022-07-09 17:02:26 +0300 Sebastian Dröge + + * gst/gstregistry.c: + registry: Remove dead code + Initialization/updating of the registry can't possible fail and all code + paths always returned TRUE. + Part-of: + +2022-07-09 16:50:54 +0300 Sebastian Dröge + + * gst/gst.c: + gst: Don't fail gst_init() if updating the registry fails + Everything is already marked as initialized at that point and by failing + no tracers would be loaded or plugin feature rank overrides would be + applied. + Part-of: + +2022-08-03 12:32:24 +0100 Tim-Philipp Müller + + * plugins/tracers/gstleaks.c: + tracers: leaks: delay type name lookup + Micro optimisation: Store the quark of the type name when tracking + objects and only do the quark to string conversion (hashtable lookup) + later when we actually need the string. + Part-of: + +2022-08-03 12:10:02 +0100 Corentin Damman + + * plugins/tracers/gstleaks.c: + tracers: leaks: fix potentially invalid memory access when trying to detect object type + The is_gst_mini_object_check would sometimes detect a proper GObject + as a mini object, and then bad things happen. + We know whether a pointer is a proper GObject or a MiniObject here + though, so just pass that information to the right code paths and + avoid the heuristics altogether. + Eliminates all remaining uses of object_is_gst_mini_object(). + Fixes #1334 + Part-of: + +2022-08-03 12:10:02 +0100 Tim-Philipp Müller + + * plugins/tracers/gstleaks.c: + tracers: leaks: fix potentially invalid memory access when trying to detect object type + The is_gst_mini_object_check would sometimes detect a proper GObject + as a mini object, and then bad things happen. + We know whether a pointer is a proper GObject or a MiniObject here + though, so just pass that information to the right code paths and + avoid the heuristics altogether. + There are probably more cases where the check should be eliminated. + Fixes #1334, maybe + Part-of: + +2022-07-28 19:44:20 +0000 Rafael Sobral + + * libs/gst/base/gstaggregator.c: + aggregator: fix reversed active/flushing arguments in debug log output + Part-of: + +2022-05-26 15:26:40 +0100 Philippe Normand + + * gst/gstversion.h.in: + GST_CHECK_VERSION: Fix unexpected "git = next version" assumption + 1.21.0.1 should not satisfy a check for 1.22.0. + If someone needs more control they should do a feature check for + the symbol in the headers or lib. + Based on a similar patch by Tim-Philipp Müller for libnice. + Part-of: + +2022-07-19 04:05:55 +0900 Seungha Yang + + * gst/gststructure.c: + * gst/gststructure.h: + * tests/check/gst/gststructure.c: + gststructure: Add gst_structure_get_flags method + We don't prevent setting G_TYPE_FLAGS on GstStructure + but no helper method for getting the value. + Add a method similar to gst_structure_get_enum() + Part-of: + +2022-07-18 15:46:21 +0300 Sebastian Dröge + + * libs/gst/base/gstaggregator.c: + aggregator: Reset EOS flag after receiving a stream-start event + And also don't assert that there are no buffers queued up when handling + an EOS event. The pad's streaming thread might've already received a new + stream-start event and queued up a buffer in the meantime. + This still leaves a race condition where the srcpad task sees all pads + in EOS state and finishes the stream, while shortly afterwards a pad + might receive a stream-start event again, but this doesn't seem to be + solveable with the current aggregator design. + Part-of: + +2022-07-12 10:49:27 +0000 Corentin Damman + + * plugins/tracers/gstleaks.c: + tracers: leaks: fix object-refings.class flags + Part-of: + +2022-07-09 18:05:58 +0300 Sebastian Dröge + + * gst/gstdevicemonitor.c: + devicemonitor: Use a sync bus handler for the provider to avoid accumulating all messages until the provider is stopped + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/981 + Part-of: + +2022-07-08 16:37:51 +0200 Jan Alexander Steffens (heftig) + + * gst/gstinfo.c: + gstinfo: Parse "NONE" as a valid level name + This allows using `NONE` in `GST_DEBUG`, + `gst_debug_set_threshold_from_string`, etc. It was accessible before, + but only via the integer `0`. + Part-of: + +2022-06-29 08:57:42 +0300 Sebastian Dröge + + * gst/gstpad.c: + * gst/gsttracerutils.c: + * gst/gsttracerutils.h: + tracing: add hooks for gst_pad_chain() / gst_pad_chain_list() + This allows tracing buffers when they arrive in a pad instead of just + when they are pushed out of a pad. + Part-of: + +2022-06-29 10:55:13 +0100 Tim-Philipp Müller + + * gst/gst.c: + * 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: + +2022-06-22 09:43:02 +0200 Jonas Danielsson + + * gst/gst.c: + gst: add missing define guard + If compiled with -Dgstreamer:gst_debug=false and we have + GST_REMOVE_DISABLED defined we will get the following compiler error: + ``` + [...]/libgstreamer-1.0.so.0.2100.0.p/gst.c.o: in function `gst_deinit': + [...]/gst/gst.c:1258: undefined reference to `_priv_gst_debug_cleanup' + [...] hidden symbol `_priv_gst_debug_cleanup' isn't defined + ``` + Add the missing define guard to avoid this. + Part-of: + +2022-06-21 11:51:35 +0300 Sebastian Dröge + + * tests/check/gst/gstbin.c: + bin: Fix race conditions in tests + The latency messages are non-deterministic and can arrive before/after + async-done or during state-changes as they are posted by e.g. sinks from + their streaming thread but bins are finishing asynchronous state changes + from a secondary helper thread. + To solve this, expect latency messages at any time and assert that we + receive one at some point during the test. + Part-of: + +2022-06-20 16:45:19 +0300 Sebastian Dröge + + * gst/gstelement.c: + * tests/check/gst/gstelement.c: + element: Fix requesting of pads with string templates + Previously it was only possible to request them with the exact template + name, e.g. 'src_%s', but not with "instantiated" names that would match + this template, e.g.'src_foo_bar'. + This is now possible and a test was added for this, in addition to + fixing a previously invalid test. + Part-of: + +2022-05-17 10:18:28 -0700 Xavier Claessens + + * gst/gstbuffer.h: + * gst/gstmemory.h: + Add GstMemoryMapInfo to be used with g_auto() + Part-of: + +2022-05-13 11:51:09 -0400 Xavier Claessens + + * gst/gstbuffer.c: + * gst/gstbuffer.h: + * tests/check/gst/gstbuffer.c: + Add GstBufferMapInfo to be used with g_auto() + We need a separate typedef for this feature because GstMapInfo itself + can be initialized by gst_memory_map() in which case info.memory should + not be unreffed. + Part-of: + +2022-06-20 15:29:21 +0100 Philippe Normand + + * tools/gst-inspect.c: + gst-inspect: Fix inspection of third-party plugins + Since commit de57657de1d1916503b4ad451ac13a3e191465f8 inspecting a third-party + plugin would trigger a segfault (Address boundary error) due to the missing + sentinel in the list of GStreamer modules. + Part-of: + +2022-06-14 16:30:08 +0100 Tim-Philipp Müller + + * docs/meson.build: + * docs/plugins/coretracers/index.md: + * docs/plugins/coretracers/sitemap.txt: + docs: ensure coretracers plugin index page is index.html + And not blank.html + Part-of: + +2022-06-12 23:28:21 +0100 Tim-Philipp Müller + + * tools/gst-inspect.c: + gst-inspect: print link to documentation for gstreamer elements + Part-of: + +2022-05-19 04:59:58 +0000 Adam Doupe + + * libs/gst/base/gstqueuearray.c: + queuearray: Fix potential heap overflow when expanding GstQueueArray + Check that elt_size*newsize doesn't overflow when expanding a + GstQueueArray, which has the potential for a heap overwrite. + Co-authored-by: Sebastian Dröge + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1232 + Part-of: + +2022-06-15 12:56:13 +0200 Víctor Manuel Jáquez Leal + + * libs/gst/check/gstharness.c: + docs: harness: Fix example + Part-of: + +2022-06-14 17:29:31 +0100 Tim-Philipp Müller + + * plugins/elements/gstmultiqueue.c: + multiqueue: fix potential crash on shutdown + The mq we get out of the weak ref might be NULL if we're + shutting down, which could cause assertion failures or + crashes. + It might also cause miscompilations where the compiler just + optimises away the NULL check because it jumps to a code path + that then dereferences the pointer which clearly isn't going + to work. Seems like something like this happens with gcc 11. + Fixes #1262 + Co-authored-by: Doug Nazar + Co-authored-by: Sebastian Dröge + Part-of: + +2022-06-14 03:29:41 -0600 James Hilliard + + * plugins/elements/gstmultiqueue.c: + multiqueue: fix warning: ‘is_query’ may be used uninitialized in this function + Fixes: + ../plugins/elements/gstmultiqueue.c: In function ‘gst_multi_queue_loop’: + ../plugins/elements/gstmultiqueue.c:2394:19: warning: ‘is_query’ may be used uninitialized in this function [-Wmaybe-uninitialized] + 2394 | if (object && !is_query) + | ^~~~~~~~~ + Part-of: + +2022-06-10 11:40:18 +0100 Tim-Philipp Müller + + * docs/random/moving-plugins: + docs: update technical howto in moving-plugins + Part-of: + +2022-06-08 11:33:22 +0530 Nirbheek Chauhan + + * gst/gst_private.h: + * gst/gstclock.c: + clock: Use g_atomic_rc_box for refcounting entry clocks + g_atomic_rc_box was added in GLib 2.58, and we require 2.62 now, so we + can fix the FIXME and use this. + Part-of: + +2022-04-06 12:56:30 +0100 Tim-Philipp Müller + + * gst/gstdevicemonitor.c: + * meson.build: + * tests/check/gst/gsturi.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: + +2022-06-01 09:25:29 +0200 Guillaume Desmottes + + * libs/gst/base/gstbasetransform.c: + basetransform: handle gst_base_transform_query_caps() returning NULL + If gst_base_transform_transform_caps() returns NULL, gst_base_transform_query_caps() + will return NULL as well. + Part-of: + +2022-05-18 17:03:27 +0200 Jan Alexander Steffens (heftig) + + * gst/gst_private.h: + * gst/gstclock.c: + clock: Avoid creating a weakref with every entry + Creating and destroying weakrefs takes a write lock on a global + `GRWLock`. This makes for a very contended lock when the pipeline has + many synchronizing elements. + Part-of: + +2022-05-31 14:27:51 +0200 Guillaume Desmottes + + * libs/gst/base/gstbasetransform.c: + basetransform: fix critical if transform_caps() returned NULL + klass->transform_caps() may return NULL, which was raising this + critical: + GStreamer-CRITICAL **: 12:23:56.243: gst_caps_is_subset: assertion 'subset != NULL' failed + Part-of: + +2022-05-29 20:38:38 +1000 tom schuring + + * gst/gstplugin.c: + plugin: add Apache 2 license to known licenses + the licence in gstreamer/subprojects/gstreamer/gst/gstplugin.c + currently is defined to be one of: + LGPL GPL QPL GPL/QPL MPL BSD MIT/X11 0BSD Proprietary + The open source project for the kinesis plugin is using an + Apache 2.0 license. Because "Apache 2.0" is not one of the + supported licenses it automatically falls back to Proprietary. + Part-of: + +2022-01-21 20:31:27 -0300 Thibault Saunier + + * gst/gst_private.h: + * gst/gststructure.c: + * gst/gstvalue.c: + * tests/check/gst/gststructure.c: + structure: Fix serializing with new format inside arrays/lists + Part-of: + +2022-05-18 10:04:08 +0800 WANG Xuerui + + * gst/gstconfig.h.in: + gstreamer/gst/gstconfig.h.in: Add support for LoongArch + While current and future LoongArch machines that are supposed to run + GStreamer all support unaligned accesses, there might be future + lower-end cores (e.g. the embedded product line) without such support, + and we may not want to penalize these use cases. + So, mark LoongArch as not supporting unaligned accesses for now, and + hope the compilers do a good job optimizing them. We can always flip + switch later. + Suggested-by: CHEN Tao + Part-of: + +2022-05-12 20:15:44 +0300 Sebastian Dröge + + * gst/gstelement.c: + element: Add sanity check with a critical warning if a pad is requested for a pad template that is not installed on the element class + Various elements are assuming that the pointer matches a pad template + they know about, and also randomly created pad templates might be + missing some important information that is necessary to create a valid + pad. + For example, creating a new pad template for audiomixer's sinkpad + without providing the correct GType would cause audiomixer to create a + GstAggregatorPad. That will then later fail spectacularly because it + assumes that it got a GstAudioAggregatorPad. + Passing a pad template that does not belong to the element class in here + will easily lead to undefined behaviour. + Part-of: + +2022-04-25 11:03:35 +0200 Stéphane Cerveau + + * tests/check/gst/gstcaps.c: + tests: test fixed caps + Add a test entry to check wether a caps is fixed + or not. + Part-of: + +2022-04-25 10:59:21 +0200 Stéphane Cerveau + + * gst/gstcaps.c: + * tests/check/pipelines/seek.c: + caps: warn with wrong mediatype in gst_caps_new_empty_simple + If passing ANY/EMPTY to gst_caps_new_empty_simple + as a mediatype, a warning will be displayed to alert + on this misuse of the API. + Part-of: + +2022-05-05 20:39:52 +0300 Sebastian Dröge + + * libs/gst/base/gstaggregator.c: + aggregator: Don't send multiple caps events with the same caps + Every time aggregator is reconfiguring it will try to negotiate new + caps. If these resulting caps are the same as the previously negotiated + caps then don't send a new caps event with the same caps again. + Part-of: + +2022-05-05 15:05:43 +0300 Sebastian Dröge + + * libs/gst/base/gstaggregator.c: + aggregator: Only send events up to CAPS event from gst_aggregator_set_src_caps() + Otherwise setting the srcpad caps based on the sinkpad caps event will + already push a segment event downstream before the upstream segment is + known. + If the upstream segments are just forwarded when the upstream segment + event arrives this would result in two segment events being sent + downstream, of which the first one will usually be simply wrong. + Part-of: + +2022-05-05 09:00:17 +0200 Edward Hervey + + * plugins/elements/gstmultiqueue.c: + multiqueue: Increase initial interleave growth rate + In the case where not all streams have received any data, growing the interleave + by only 100ms is too restrictive and would cause some (valid) mpeg-ts streams to + hang. + Bump up the interleave growth rate for those use-cases to 500ms per input (still + up to the limit of 5s). + Part-of: + +2022-05-02 11:41:52 +0100 Tim-Philipp Müller + + * plugins/elements/gstfilesink.c: + filesink: fix handling of non-existing paths with musl + Fixes #1194 + Part-of: + +2022-04-09 21:07:43 +0100 Tim-Philipp Müller + + * gst/gstregistry.c: + registry: skip Rust dep builddirs when searching for plugins recursively + These artefacts confuse the plugin scanner and may cause noisy warnings + (and slow down things). + Fixes https://gitlab.freedesktop.org/gstreamer/gst-build/-/issues/68 + Part-of: + +2020-11-26 18:11:12 +0100 Mathieu Duponchelle + + * libs/gst/base/gstaggregator.c: + aggregator: forward gap event information to gap buffer + When the GAP event was flagged with MISSING_DATA, subclasses + may want to adopt a different behaviour, for example by repeating + the last buffer. + As we turn these gap events into gap buffers, we need to flag + those, we do so with a new custom meta. + Part-of: + +2022-02-25 16:54:37 -0500 Xavier Claessens + + * libs/gst/helpers/meson.build: + meson: Add PYTHONPATH to load GDB helper module + Meson generates a gdbinit file that will automatically load gstreamer + script. However that script uses a helper python module that needs + PYTHONPATH to be pointing into the right location in the source + tree to be able to find gst_gdb.py. + Part-of: + +2022-04-20 09:38:16 +0200 Guillaume Desmottes + + * plugins/tracers/gstleaks.c: + gstleaks: log the number of alive objects + Can help checking if the number of alive objects is growing over time or stays stable. + Part-of: + +2022-04-19 14:05:16 +0300 Sebastian Dröge + + * gst/gstbuffer.h: + gstreamer: Document various caps for the reference timestamp meta + Part-of: + +2022-03-25 10:18:34 -0400 Xavier Claessens + + * docs/random/i18n: + 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: + +2022-03-25 10:20:24 -0400 Xavier Claessens + + * docs/meson.build: + * gst/gettext.h: + * gst/gst-i18n-app.h: + * gst/gst-i18n-lib.h: + Delete unused i18n headers + Part-of: + +2022-03-25 09:59:23 -0400 Xavier Claessens + + * docs/gst-hotdoc-plugins-scanner.c: + * gst/gst.c: + * gst/gstelement.c: + * gst/gsterror.c: + * gst/gstpipeline.c: + * gst/gstregistry.c: + * gst/gsttaglist.c: + * gst/gsturi.c: + * gst/gstutils.c: + * gst/parse/grammar.y.in: + * libs/gst/base/gstbasesink.c: + * libs/gst/base/gstbasesrc.c: + * libs/gst/base/gstbasetransform.c: + * plugins/elements/gstcapsfilter.c: + * plugins/elements/gstdownloadbuffer.c: + * plugins/elements/gstfdsink.c: + * plugins/elements/gstfilesink.c: + * plugins/elements/gstfilesrc.c: + * plugins/elements/gstidentity.c: + * plugins/elements/gstqueue.c: + * plugins/elements/gstqueue2.c: + * plugins/elements/gsttypefindelement.c: + * tools/tools.h: + 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: + +2022-04-18 15:44:47 +0530 Nirbheek Chauhan + + * gst/meson.build: + * 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: + +2021-11-12 20:13:10 +0100 Ruben Gonzalez + + * gst/gstplugin.c: + 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: + +2020-05-29 11:29:56 -0300 Tulio Beloqui + + * gst/gstdevicemonitor.c: + gstdevicemonitor: added cleanup of signal handlers and hidden providers list + Part-of: + +2022-04-15 17:00:24 +0200 Guillaume Desmottes + + * plugins/tracers/gstleaks.c: + gstleaks: fix pthread_atfork return value check + pthread_atfork() returns 0 on success. + Part-of: + +2022-04-13 16:59:50 +0300 Sebastian Dröge + + * libs/gst/net/gstptpclock.c: + ptpclock: Fix wrong condition order from last commit + Part-of: + +2022-04-12 19:22:51 +0300 Sebastian Dröge + + * libs/gst/net/gstptpclock.c: + ptpclock: Allow at least 100ms delay between Sync/Follow_Up and Delay_Req/Delay_Resp messages + It doesn't matter for measurement purposes whether receiving them takes + a while and various PTP servers are not prioritizing to send them, + causing them to be dropped unnecessarily and preventing proper + synchronization with such servers. + This is especially a problem if the RTTs in the network are very low + compared to the additional delay imposed by the server. + Part-of: + +2022-04-12 01:01:23 +0900 Seungha Yang + + * tools/gst-launch.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: + +2022-04-08 13:44:53 +1000 Matthew Waters + + * gst/gst.c: + gst: remove custom logger for critical/warnings/fatals + It's not really needed anymore (only calls out to + g_log_default_handler() and interferes with applications using + g_log_set_default_handler(). + Part-of: + +2022-04-01 21:47:59 +0800 Haihua Hu + + * tools/gst-launch.c: + ximagesink/xvimagesink: use GST_XINITTHREADS to ensure call to XInitThreads + Part-of: + +2022-04-02 00:16:29 +1100 Jan Schmidt + + * libs/gst/base/gstaggregator.c: + aggregator: Improve debugging of arriving buffers + Log some details about the buffers that are arriving and + being enqueued on each sink pad. + Part-of: + +2022-04-02 00:46:21 +1100 Jan Schmidt + + * gst/gstpad.c: + gstreamer: Remove GST_DATAFLOW debug category + Nothing has logged anything to this category since event and + buffer dataflow was de-unified in 2005. + Part-of: + +2022-03-30 11:06:02 -0400 Xavier Claessens + + * 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: + +2022-03-25 15:00:20 -0400 Xavier Claessens + + * docs/meson.build: + * libs/gst/base/meson.build: + * libs/gst/check/meson.build: + * libs/gst/controller/meson.build: + * libs/gst/helpers/meson.build: + * meson.build: + * plugins/elements/meson.build: + * tests/benchmarks/meson.build: + * tests/check/meson.build: + * tests/examples/adapter/meson.build: + * tests/examples/controller/meson.build: + * tests/examples/helloworld/meson.build: + * tests/examples/memory/meson.build: + * tests/examples/netclock/meson.build: + * tests/examples/ptp/meson.build: + * tests/examples/stepping/meson.build: + * tests/examples/streamiddemux/meson.build: + * tests/examples/streams/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: + +2022-03-24 14:15:00 -0400 Xavier Claessens + + * meson.build: + Fix cross build with mingw32 + At least on Ubuntu 20.04 the x86_64-w64-mingw32-gcc toolchain defaults + to WinXP. We require at least Vista for FILE_STANDARD_INFO. + Part-of: + +2020-09-04 20:52:47 -0400 Xavier Claessens + + * data/android/GStreamer.java: + * data/meson.build: + * gst/gstandroid.c: + * gst/meson.build: + Android: Implement JNI_OnLoad() + When building for Android, chances are that gstreamer is going to be + loaded from Java using System.loadLibrary(). In that case we can + initialize GStreamer (including static plugins), redirect log functions, + etc. + This code is copied from cerbero because it can be used with + gstreamer-full-1.0 too. Cerbero needs to be adapted to drop that code + and generate gst_init_static_plugins() function. + Part-of: + +2021-09-11 12:17:56 -0300 Thibault Saunier + + * meson.build: + * tools/meson.build: + tools: Add support for building gstreamer tools against gst-full + Part-of: + +2022-03-30 10:01:33 +0200 Edward Hervey + + * gst/gstquark.c: + * gst/gstquark.h: + * gst/gstquery.c: + * gst/gstquery.h: + query: Add a new stream selection query + This new API allows querying whether elements can handle stream selection + themselves or not. + Part-of: + +2022-03-18 13:42:27 +0530 Nirbheek Chauhan + + * 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: + +2022-01-05 19:33:06 +0100 Vivienne Watermeier + + * libs/gst/base/gstaggregator.c: + compositor: send translated navigation events to the relevant sink pads + Fixes #888 + Part-of: + +2022-02-23 17:39:18 +0100 Vivienne Watermeier + + * gst/gstevent.c: + * gst/gstmessage.c: + documentation: improve misleading wording + The documentation for several gst_*_writable_structure functions stated + that they would never return NULL, without making clear that the passed + object is required to be writable. This changes the wording in those + cases to make that requirement more clear. + Part-of: + +2022-03-10 18:22:49 +0000 Philippe Normand + + * gst/gsturi.c: + uri: Build doubly-linked list by prepending items + As outlined in the API documentation, g_list_append() iterates over the whole + list, which can quickly introduce performance issues when the list becomes very + big, such as for data URIs for instance. + Part-of: + +2022-03-08 12:04:41 +0000 Philippe Normand + + * plugins/elements/gsttypefindelement.c: + typefind: Skip parsing of data URIs + Commit a46ab2ced20d757e0e770d4de1edc3a152cc4f2f introduced a regression, + breaking typefinding for media content muxed in mp4 container and serialized to + data URIs. For this case it doesn't make sense to look for a file extension, so + skip URI parsing. + Part-of: + +2022-03-15 14:00:06 +0100 Corentin Noël + + * libs/gst/base/gstbasesink.h: + basesink: Fix annotations + We should annotate the Class and not the object itself. + Part-of: + +2022-03-11 18:08:14 -0500 Xavier Claessens + + * data/bash-completion/helpers/meson.build: + * data/meson.build: + * libs/gst/helpers/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: + +2022-03-02 17:07:37 +0100 Edward Hervey + + * plugins/elements/gstmultiqueue.c: + multiqueue: Fix interleave calculation for data before segment start + This commit modifies the interleave calculation to allow growing when incoming + data is before the segment start. + The rationale is that there is no requirement whatsoever for data before the + segment start to be "coherent" on all streams. + For example, a demuxer could rightfully send data from the video stream from the + previous keyframe (potentially quite a bit before the segment start) and the + audio from just before the segment start. + This will activate the same logic as growing the interleave when some streams + haven't received buffers yet. + Part-of: + +2021-08-06 08:30:39 +0200 Edward Hervey + + * plugins/elements/gstmultiqueue.c: + * plugins/elements/gstmultiqueue.h: + multiqueue: Improve interleave calculation at startup and EOS + * When a stream receives EOS, it will no longer change, we shouldn't take that + stream into account for interleave calculation. + * When streams (re)appear, we do not want to grow the initial interleave values + to excessive values. Instead of setting it to a default of 5s, progressively + grow it to that maximum. + * When the status of input streams change (i.e. going to/from "some haven't + received data yet" and "all have received data"), update the interleave + immediately instead of waiting for (potentially) 5s of data before updating + it. + Part-of: + +2021-12-20 17:31:17 +0100 sergei.kovalev + + * tests/check/gstreamer.supp: + check: Fix valgrind suppression for debug function list + Fix suppression to support release and debug builds. + Here is the debug build call stack: + ``` + ==10707== by 0x48B5520: g_malloc (gmem.c:106) + ==10707== by 0x48D19DC: g_slice_alloc (gslice.c:1069) + ==10707== by 0x48D3947: g_slist_copy_deep (gslist.c:619) + ==10707== by 0x48D38B8: g_slist_copy (gslist.c:567) + ==10707== by 0x4ADC90B: gst_debug_remove_with_compare_func (gstinfo.c:1504) + ``` + In release build `g_slist_copy (gslist.c:567)` got inlined: + ``` + ==15419== by 0x48963E0: g_malloc (gmem.c:106) + ==15419== by 0x48AA382: g_slice_alloc (gslice.c:1069) + ==15419== by 0x48AB732: g_slist_copy_deep (gslist.c:619) + ==15419== by 0x4A39B8F: gst_debug_remove_with_compare_func (gstinfo.c:1504) + ``` + Part-of: + +2022-02-21 10:49:15 +0100 Sebastian Fricke + + * docs/gst/running.md: + * docs/index.md: + * gst/gstregistry.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: + +2022-02-23 11:10:11 +0100 Sebastian Fricke + + * 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: + +2022-02-23 10:13:54 +0200 Sebastian Dröge + + * gst/gstbuffer.h: + buffer: Clarify that the MARKER flag maps to the corresponding RTP header flag + Part-of: + +2022-02-27 13:17:40 +0200 Sebastian Dröge + + * gst/gstregistry.c: + registry: Fix multi-line `#warning` compiler warning + subprojects/gstreamer/gst/gstregistry.c:1593: unexpected character `"' + Part-of: + +2022-02-21 11:37:26 -0500 Xavier Claessens + + * libs/gst/helpers/meson.build: + devenv: Add some missing GStreamer specific env variables + This should make "meson devenv" closer to what "gst-env.py" sets. + - GST_VALIDATE_SCENARIOS_PATH + - GST_VALIDATE_APPS_DIR + - GST_OMX_CONFIG_DIR + - GST_ENCODING_TARGET_PATH + - GST_PRESET_PATH + - GST_PLUGIN_SCANNER + - GST_PTP_HELPER + - _GI_OVERRIDES_PATH + Part-of: + +2021-11-03 17:05:07 +1100 Matthew Waters + + * libs/gst/check/gsttestclock.c: + tests/clock: avoid a race cranking + Scenario: + - Source 1 requesting and waiting a clock id + - Source 2 requesting and waiting on a clock id + - Test attempting to crank both sources in the same GstHarness + gst_test_clock_crank() originally dropped locks between the retrieving + of the next clock id and advancing to the next clock id. This would + mean that both sources would race each other attempting to complete + their clock waits. Sometimes the operations would be performed in the + correct order, other times they would not and a FALSE return value would + be produced. + This would lead to an assertion in gst_harness_push_from_src() expecting + that all clock cranks to succeed. + Fix by ensuring that the clock wait produced is dealt with before + processing the next by not dropping the relevant locks after retrieving + the next clock id. + Part-of: + +2021-11-02 15:58:49 -0400 Nicolas Dufresne + + doc: Fix doc comment for GstChildProxy + This removes warning like: + ../subprojects/gstreamer/gst/gstchildproxy.h:57: Error: Gst: identifier not found on the first line: + * #GstChildProxyInterface::get_child_by_name: + ^ + Part-of: + +2022-02-06 22:54:42 +0900 Seungha Yang + + * gst/gstinfo.c: + * libs/gst/check/libcheck/libcompat/libcompat.h: + * libs/gst/net/gstptpclock.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: + +2022-02-07 02:49:15 +0900 Seungha Yang + + * meson.build: + * tests/check/elements/fdsrc.c: + * tests/check/gst/gstpoll.c: + check: Disable some tests if pipe() is unavailable for UWP build + pipe() and _pipe() are not allowed on UWP + Part-of: + +2021-10-01 20:27:28 +0900 Seungha Yang + + * meson.build: + * tests/check/gst/gstmeta.c: + * tests/check/gst/gstpoll.c: + * tools/gst-inspect.c: + meson: Do hard build error for some MSVC warnings + Handle various MSVC warnings as errors for development version. + Part-of: + +2022-02-08 23:30:00 +0900 Seungha Yang + + * libs/gst/check/libcheck/libcompat/libcompat.h: + Remove some trailing white spaces + Part-of: + +2022-01-31 13:01:10 +0100 Vivienne Watermeier + + * gst/gstevent.c: + navigation: add more constructors for navigation events + Part-of: + +2022-02-08 12:58:52 +1100 Matthew Waters + + * gst/gstregistry.c: + registry: enable relocatable builds for anywhere with dladdr() + Such as Linux/BSD's. + Matches the Windows/macOS behaviour. + Part-of: + +2021-12-08 22:13:15 +0000 Jose Quaresma + + * gst/gstpluginloader.c: + gstpluginloader: show the reason when spawning of gst-plugin-scanner fail + This fix helps in cross compiling when the meson tests runs using a qemu wraper + Part-of: + +2021-10-22 18:40:07 -0300 Martin Reboredo + + * gst/gstvalue.c: + gstvalue: De/Serialization of GBytes + Part-of: + +2022-02-08 16:24:13 +1100 Sebastian Mueller + + * gst/gstcontext.c: + context: fix transfer annotation + Part-of: + +2020-02-17 21:50:54 -0600 Zebediah Figura + + * libs/gst/base/gstbaseparse.c: + * tests/check/libs/baseparse.c: + baseparse: Don't truncate the duration to milliseconds in gst_base_parse_convert_default(). + There's no need to do this, and it can make seeking far less accurate. + For a specific use case: I am working with a long (45-minute) MPEG-1 layer 3 file, which has a constant bit rate but no seeking tables. Trying to seek the pipeline immediately after pausing it, without the ACCURATE flag, to a location 41 minutes in, yields a location that is potentially over ten seconds ahead of where it should be. This patch improves that drastically. + Part-of: + +2022-02-07 19:33:31 -0600 Zebediah Figura + + * libs/gst/base/gstbaseparse.c: + baseparse: Trace time with GST_TIME_FORAMT in gst_base_parse_convert_default(). + Be consistent with how we trace time in general. + Part-of: + +2022-02-07 09:46:46 +0200 Sebastian Dröge + + * gst/gstbufferpool.c: + bufferpool: Deactivate pool and get rid of references to other objects from dispose instead of finalize + During dispose the pool will still have a reference count of 1 and all + API on it can still be safely called. + Subclasses will have already freed their own data before finalize is + called but would nonetheless be called into again via the pool + deactivation. + Part-of: + +2022-02-07 16:51:25 +1100 Matthew Waters + + * gst/gstpluginloader.c: + * meson.build: + pluginloader: support multiple subdirectories for GST_PLUGIN_SUBDIR (libdir) + i.e. if GST_PLUGIN_SUBDIR is 'some/lib/path', then the default plugin + loading assumed that there was only 'lib' as it only went up a single + directory to then find the plugin scanner. + Fix to support multiple subdirectories for GST_PLUGIN_SUBDIR (libdir). + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/995 + Part-of: + +2022-02-07 16:36:13 +1100 Matthew Waters + + * gst/gstregistry.c: + registry: check the value of dladdr() + info.dli_fname could be NULL. + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/994 + Part-of: + +2022-02-07 16:33:03 +1100 Matthew Waters + + * gst/gstregistry.c: + registry: check the return value of g_win32_get_package_installation_directory_of_module() + g_win32_get_package_installation_directory_of_module() may return NULL + in some circumstances and we need to deal with that. + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/996 + Part-of: + +2022-02-04 11:15:47 +0000 Tim-Philipp Müller + + * meson.build: + Back to development + Part-of: + === release 1.20.0 === 2022-02-03 19:53:25 +0000 Tim-Philipp Müller + * ChangeLog: * NEWS: * README: * RELEASE: