Diff
Modified: trunk/Tools/ChangeLog (267138 => 267139)
--- trunk/Tools/ChangeLog 2020-09-16 07:08:03 UTC (rev 267138)
+++ trunk/Tools/ChangeLog 2020-09-16 07:10:23 UTC (rev 267139)
@@ -1,3 +1,28 @@
+2020-09-16 Philippe Normand <[email protected]>
+
+ [GStreamer] Update Flatpak SDK to 1.18.0
+ https://bugs.webkit.org/show_bug.cgi?id=216270
+
+ Reviewed by Žan Doberšek.
+
+ Update to GStreamer 1.18.0, removing the patches now being shipped in this release.
+
+ * buildstream/elements/sdk/gst-libav.bst:
+ * buildstream/elements/sdk/gst-plugins-bad.bst:
+ * buildstream/elements/sdk/gst-plugins-base.bst:
+ * buildstream/elements/sdk/gst-plugins-good.bst:
+ * buildstream/elements/sdk/gst-plugins-ugly.bst:
+ * buildstream/elements/sdk/gstreamer.bst:
+ * buildstream/patches/gst-libav-stop-caching-codecs.patch: Removed.
+ * buildstream/patches/gst-plugins-bad-0001-h264parse-Post-a-WARNING-when-data-is-broken.patch: Removed.
+ * buildstream/patches/gst-plugins-base-0001-glupload-Fix-fallback-from-direct-dmabuf-to-dmabuf-u.patch: Removed.
+ * buildstream/patches/gst-plugins-base-0001-oggstream-Workaround-for-broken-PAR-in-VP8-BOS.patch: Removed.
+ * buildstream/patches/gst-plugins-base-0001-playbin-Handle-error-message-with-redirection-indica.patch: Removed.
+ * buildstream/patches/gst-plugins-base-0002-glupload-fix-segfault.patch: Removed.
+ * buildstream/patches/gst-plugins-base-0003-glbasefilter-add-support-for-changing-the-display.patch: Removed.
+ * buildstream/patches/gst-plugins-good-qtdemux-Specify-REDIRECT-information-in-error-messag.patch: Removed.
+ * buildstream/patches/libav-0001-gstavviddec-Limit-default-number-of-decoder-threads.patch: Removed.
+
2020-09-15 David Kilzer <[email protected]>
WebKit should support building with clang ThreadSanitizer enabled
Modified: trunk/Tools/buildstream/elements/sdk/gst-libav.bst (267138 => 267139)
--- trunk/Tools/buildstream/elements/sdk/gst-libav.bst 2020-09-16 07:08:03 UTC (rev 267138)
+++ trunk/Tools/buildstream/elements/sdk/gst-libav.bst 2020-09-16 07:10:23 UTC (rev 267139)
@@ -1,13 +1,8 @@
kind: meson
sources:
- kind: tar
- url: gst_downloads:gst-libav/gst-libav-1.16.2.tar.xz
- ref: c724f612700c15a933c7356fbeabb0bb9571fb5538f8b1b54d4d2d94188deef2
-- kind: patch
- path: patches/libav-0001-gstavviddec-Limit-default-number-of-decoder-threads.patch
-- kind: patch
- path: patches/gst-libav-stop-caching-codecs.patch
-
+ url: gst_downloads:gst-libav/gst-libav-1.18.0.tar.xz
+ ref: 42f93f5ce9a3fc22051e5f783a4574b56ebf213f331f75dcbc3552459bd3a06a
build-depends:
- freedesktop-sdk.bst:public-stacks/buildsystem-meson.bst
- freedesktop-sdk.bst:components/nasm.bst
@@ -18,8 +13,9 @@
- freedesktop-sdk.bst:bootstrap-import.bst
variables:
- meson-local: |
- '-Dc_args=-DTRIPLET=\"%{gcc_triplet}\"'
+ meson-local: >-
+ -Dc_args=-DTRIPLET=\"%{gcc_triplet}\"
+ -Ddoc=disabled
public:
bst:
Modified: trunk/Tools/buildstream/elements/sdk/gst-plugins-bad.bst (267138 => 267139)
--- trunk/Tools/buildstream/elements/sdk/gst-plugins-bad.bst 2020-09-16 07:08:03 UTC (rev 267138)
+++ trunk/Tools/buildstream/elements/sdk/gst-plugins-bad.bst 2020-09-16 07:10:23 UTC (rev 267139)
@@ -1,11 +1,8 @@
kind: meson
sources:
- kind: tar
- url: gst_downloads:gst-plugins-bad/gst-plugins-bad-1.16.2.tar.xz
- ref: f1cb7aa2389569a5343661aae473f0a940a90b872001824bc47fa8072a041e74
-- kind: patch
- path: patches/gst-plugins-bad-0001-h264parse-Post-a-WARNING-when-data-is-broken.patch
-
+ url: gst_downloads:gst-plugins-bad/gst-plugins-bad-1.18.0.tar.xz
+ ref: f382ab1caddd64aaa7acb7c4787487f63fd39bd0fde9c757655cbaa457c1185f
build-depends:
- freedesktop-sdk.bst:public-stacks/buildsystem-meson.bst
depends:
@@ -40,6 +37,7 @@
-Dintrospection=disabled
-Dexamples=disabled
-Dassrender=disabled
+ -Davtp=disabled
-Dbluez=disabled
-Dbs2b=disabled
-Dchromaprint=disabled
@@ -52,6 +50,7 @@
-Ddecklink=disabled
-Ddirectfb=disabled
-Ddirectsound=disabled
+ -Ddoc=disabled
-Ddts=disabled
-Ddvb=disabled
-Dfaac=disabled
@@ -66,6 +65,8 @@
-Dlibde265=disabled
-Dlibmms=disabled
-Dlv2=disabled
+ -Dmagicleap=disabled
+ -Dmicrodns=disabled
-Dmodplug=disabled
-Dmpeg2enc=disabled
-Dmplex=disabled
@@ -83,7 +84,6 @@
-Dopenmpt=disabled
-Dopenni2=disabled
-Dopensles=disabled
- -Dopensles=disabled
-Dresindvd=disabled
-Drsvg=disabled
-Drtmp=disabled
@@ -92,9 +92,11 @@
-Dsoundtouch=disabled
-Dspandsp=disabled
-Dsrt=disabled
+ -Dsvthevcenc=disabled
-Dteletext=disabled
-Dtinyalsa=disabled
-Dttml=disabled
+ -Dva=disabled
-Dvaacenc=disabled
-Dvdpau=disabled
-Dvoaacenc=disabled
@@ -101,6 +103,7 @@
-Dvoamrwbenc=disabled
-Dvulkan=disabled
-Dwasapi=disabled
+ -Dwasapi2=disabled
-Dwebp=disabled
-Dwebrtcdsp=disabled
-Dwildmidi=disabled
@@ -109,7 +112,8 @@
-Dwpe=disabled
-Dx265=disabled
-Dzbar=disabled
-
+ -Dzxing=disabled
+
public:
bst:
split-rules:
Modified: trunk/Tools/buildstream/elements/sdk/gst-plugins-base.bst (267138 => 267139)
--- trunk/Tools/buildstream/elements/sdk/gst-plugins-base.bst 2020-09-16 07:08:03 UTC (rev 267138)
+++ trunk/Tools/buildstream/elements/sdk/gst-plugins-base.bst 2020-09-16 07:10:23 UTC (rev 267139)
@@ -1,19 +1,8 @@
kind: meson
sources:
- kind: tar
- url: gst_downloads:gst-plugins-base/gst-plugins-base-1.16.2.tar.xz
- ref: b13e73e2fe74a4166552f9577c3dcb24bed077021b9c7fa600d910ec6987816a
-- kind: patch
- path: patches/gst-plugins-base-0001-playbin-Handle-error-message-with-redirection-indica.patch
-- kind: patch
- path: patches/gst-plugins-base-0001-glupload-Fix-fallback-from-direct-dmabuf-to-dmabuf-u.patch
-- kind: patch
- path: patches/gst-plugins-base-0002-glupload-fix-segfault.patch
-- kind: patch
- path: patches/gst-plugins-base-0003-glbasefilter-add-support-for-changing-the-display.patch
-- kind: patch
- path: patches/gst-plugins-base-0001-oggstream-Workaround-for-broken-PAR-in-VP8-BOS.patch
-
+ url: gst_downloads:gst-plugins-base/gst-plugins-base-1.18.0.tar.xz
+ ref: 762abdd1a950809a1cea62fff7f86b5f7d6bd5f6841e3e585c700b823cdb7897
build-depends:
- freedesktop-sdk.bst:public-stacks/buildsystem-meson.bst
depends:
@@ -44,6 +33,7 @@
-Dtremor=disabled
-Dexamples=disabled
-Dgtk_doc=disabled
+ -Ddoc=disabled
-Dtests=disabled
public:
Modified: trunk/Tools/buildstream/elements/sdk/gst-plugins-good.bst (267138 => 267139)
--- trunk/Tools/buildstream/elements/sdk/gst-plugins-good.bst 2020-09-16 07:08:03 UTC (rev 267138)
+++ trunk/Tools/buildstream/elements/sdk/gst-plugins-good.bst 2020-09-16 07:10:23 UTC (rev 267139)
@@ -1,11 +1,8 @@
kind: meson
sources:
- kind: tar
- url: gst_downloads:gst-plugins-good/gst-plugins-good-1.16.2.tar.xz
- ref: 40bb3bafda25c0b739c8fc36e48380fccf61c4d3f83747e97ac3f9b0171b1319
-- kind: patch
- path: patches/gst-plugins-good-qtdemux-Specify-REDIRECT-information-in-error-messag.patch
-
+ url: gst_downloads:gst-plugins-good/gst-plugins-good-1.18.0.tar.xz
+ ref: 6329bc377a3afea5cf1ab329a91cc4a906f075781780d1edc59e8bea8c1a8bac
build-depends:
- freedesktop-sdk.bst:public-stacks/buildsystem-meson.bst
depends:
@@ -26,6 +23,7 @@
- freedesktop-sdk.bst:components/libpulse.bst
- freedesktop-sdk.bst:components/libvpx.bst
- freedesktop-sdk.bst:components/mpg123.bst
+- freedesktop-sdk.bst:components/nasm.bst
- freedesktop-sdk.bst:components/orc.bst
- freedesktop-sdk.bst:components/speex.bst
- freedesktop-sdk.bst:components/wavpack.bst
@@ -34,11 +32,12 @@
meson-local: >-
-Dpackage-origin="webkit-sdk"
-Daalib=disabled
+ -Ddoc=disabled
-Djack=disabled
-Dlibcaca=disabled
-Ddv=disabled
-Ddv1394=disabled
- -Dqt5=disabled
+ -Drpicamsrc=disabled
-Dshout2=disabled
-Dtaglib=disabled
-Dtwolame=disabled
Modified: trunk/Tools/buildstream/elements/sdk/gst-plugins-ugly.bst (267138 => 267139)
--- trunk/Tools/buildstream/elements/sdk/gst-plugins-ugly.bst 2020-09-16 07:08:03 UTC (rev 267138)
+++ trunk/Tools/buildstream/elements/sdk/gst-plugins-ugly.bst 2020-09-16 07:10:23 UTC (rev 267139)
@@ -1,9 +1,8 @@
kind: meson
sources:
- kind: tar
- url: gst_downloads:gst-plugins-ugly/gst-plugins-ugly-1.16.2.tar.xz
- ref: 5500415b865e8b62775d4742cbb9f37146a50caecfc0e7a6fc0160d3c560fbca
-
+ url: gst_downloads:gst-plugins-ugly/gst-plugins-ugly-1.18.0.tar.xz
+ ref: 686644e45e08258ae240c4519376668ad8d34ea6d0f6ab556473c317bfb7e082
build-depends:
- freedesktop-sdk.bst:public-stacks/buildsystem-meson.bst
depends:
Modified: trunk/Tools/buildstream/elements/sdk/gstreamer.bst (267138 => 267139)
--- trunk/Tools/buildstream/elements/sdk/gstreamer.bst 2020-09-16 07:08:03 UTC (rev 267138)
+++ trunk/Tools/buildstream/elements/sdk/gstreamer.bst 2020-09-16 07:10:23 UTC (rev 267139)
@@ -1,9 +1,8 @@
kind: meson
sources:
- kind: tar
- url: gst_downloads:gstreamer/gstreamer-1.16.2.tar.xz
- ref: e3f044246783fd685439647373fa13ba14f7ab0b346eadd06437092f8419e94e
-
+ url: gst_downloads:gstreamer/gstreamer-1.18.0.tar.xz
+ ref: 0ff09245b06c0aeb5d9a156edcab088a7e8213a0bf9c84a1ff0318f9c00c7805
build-depends:
- freedesktop-sdk.bst:components/gobject-introspection.bst
- freedesktop-sdk.bst:public-stacks/buildsystem-meson.bst
@@ -26,6 +25,7 @@
-Ddbghelp=disabled
-Dbash-completion=disabled
-Dgtk_doc=disabled
+ -Ddoc=disabled
-Dpackage-origin="webkit-sdk"
public:
Deleted: trunk/Tools/buildstream/patches/gst-libav-stop-caching-codecs.patch (267138 => 267139)
--- trunk/Tools/buildstream/patches/gst-libav-stop-caching-codecs.patch 2020-09-16 07:08:03 UTC (rev 267138)
+++ trunk/Tools/buildstream/patches/gst-libav-stop-caching-codecs.patch 2020-09-16 07:10:23 UTC (rev 267139)
@@ -1,30 +0,0 @@
-From 2c371f17af1695bd42f572d5ccdb837152b8b67a Mon Sep 17 00:00:00 2001
-From: Thomas Coldrick <[email protected]>
-Date: Thu, 8 Nov 2018 17:46:53 +0000
-Subject: [PATCH] gst-libav-stop-caching-codecs
-
----
- ext/libav/gstav.c | 16 ++++++++++++++++
- 1 file changed, 16 insertions(+)
-
-diff --git a/ext/libav/gstav.c b/ext/libav/gstav.c
-index 2a88230..bfd19a1 100644
---- a/ext/libav/gstav.c
-+++ b/ext/libav/gstav.c
-@@ -155,6 +155,13 @@ plugin_init (GstPlugin * plugin)
- /* build global ffmpeg param/property info */
- gst_ffmpeg_cfg_init ();
-
-+ gst_plugin_add_dependency_simple (plugin, NULL,
-+ "/app/lib/" TRIPLET "/ffmpeg:/app/lib/ffmpeg:/usr/lib/" TRIPLET ":/usr/local/lib:/usr/lib/" TRIPLET "/ffmpeg",
-+ "libavcodec.so.58,"
-+ "libavformat.so.58,"
-+ "libswscale.so.5",
-+ GST_PLUGIN_DEPENDENCY_FLAG_NONE);
-+
- gst_ffmpegaudenc_register (plugin);
- gst_ffmpegvidenc_register (plugin);
- gst_ffmpegauddec_register (plugin);
---
-2.19.1
-
Deleted: trunk/Tools/buildstream/patches/gst-plugins-bad-0001-h264parse-Post-a-WARNING-when-data-is-broken.patch (267138 => 267139)
--- trunk/Tools/buildstream/patches/gst-plugins-bad-0001-h264parse-Post-a-WARNING-when-data-is-broken.patch 2020-09-16 07:08:03 UTC (rev 267138)
+++ trunk/Tools/buildstream/patches/gst-plugins-bad-0001-h264parse-Post-a-WARNING-when-data-is-broken.patch 2020-09-16 07:10:23 UTC (rev 267139)
@@ -1,25 +0,0 @@
-From 475628c20e548a18c55e6bd8e9c3e3a73cf7192d Mon Sep 17 00:00:00 2001
-From: Thibault Saunier <[email protected]>
-Date: Fri, 31 May 2019 10:12:54 -0400
-Subject: [PATCH] h264parse: Post a WARNING when data is broken
-
----
- gst/videoparsers/gsth264parse.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/gst/videoparsers/gsth264parse.c b/gst/videoparsers/gsth264parse.c
-index 41a31eafa..fa64671de 100644
---- a/gst/videoparsers/gsth264parse.c
-+++ b/gst/videoparsers/gsth264parse.c
-@@ -1313,6 +1313,8 @@ gst_h264_parse_handle_frame (GstBaseParse * parse,
- /* broken nal at start -> arrange to skip it,
- * otherwise have it terminate current au
- * (and so it will be skipped on next frame round) */
-+ GST_ELEMENT_WARNING (h264parse, STREAM, DECODE,
-+ (NULL), ("Broken bit stream"));
- if (current_off == 0) {
- GST_DEBUG_OBJECT (h264parse, "skipping broken nal");
- *skipsize = nalu.offset;
---
-2.21.0
-
Deleted: trunk/Tools/buildstream/patches/gst-plugins-base-0001-glupload-Fix-fallback-from-direct-dmabuf-to-dmabuf-u.patch (267138 => 267139)
--- trunk/Tools/buildstream/patches/gst-plugins-base-0001-glupload-Fix-fallback-from-direct-dmabuf-to-dmabuf-u.patch 2020-09-16 07:08:03 UTC (rev 267138)
+++ trunk/Tools/buildstream/patches/gst-plugins-base-0001-glupload-Fix-fallback-from-direct-dmabuf-to-dmabuf-u.patch 2020-09-16 07:10:23 UTC (rev 267139)
@@ -1,175 +0,0 @@
-From 6ceaf111870b31bff922ea35fe943d853e44afa3 Mon Sep 17 00:00:00 2001
-From: Chris Lord <[email protected]>
-Date: Mon, 9 Mar 2020 10:21:53 +0000
-Subject: [PATCH 1/2] glupload: Fix fallback from direct dmabuf to dmabuf
- upload method
-
-In the situation that the direct dmabuf path is chosen, but with an
-unsupported texture format, this causes accept to fail rather than
-continue and fail at the upload stage. It is also possibly necessary to
-reconfigure after falling back from direct to non-direct dmabuf upload
-paths.
----
- gst-libs/gst/gl/egl/gsteglimage.c | 29 ++++++++++++++-----
- gst-libs/gst/gl/egl/gsteglimage_private.h | 35 +++++++++++++++++++++++
- gst-libs/gst/gl/gstglupload.c | 17 +++++++++--
- 3 files changed, 72 insertions(+), 9 deletions(-)
- create mode 100644 gst-libs/gst/gl/egl/gsteglimage_private.h
-
-diff --git a/gst-libs/gst/gl/egl/gsteglimage.c b/gst-libs/gst/gl/egl/gsteglimage.c
-index 85fbefa6e..13e204dcd 100644
---- a/gst-libs/gst/gl/egl/gsteglimage.c
-+++ b/gst-libs/gst/gl/egl/gsteglimage.c
-@@ -39,6 +39,7 @@
- #endif
-
- #include "gsteglimage.h"
-+#include "gsteglimage_private.h"
-
- #include <string.h>
-
-@@ -673,8 +674,20 @@ _drm_direct_fourcc_from_info (GstVideoInfo * info)
- }
- }
-
--static gboolean
--_gst_egl_image_check_dmabuf_direct (GstGLContext * context, int fourcc)
-+/*
-+ * gst_egl_image_check_dmabuf_direct:
-+ * @context: a #GstGLContext (must be an EGL context)
-+ * @in_info: a #GstVideoInfo
-+ * @target: a #GstGLTextureTarget
-+ *
-+ * Checks whether the video format specified by the given #GstVideoInfo is a
-+ * supported texture format for the given target.
-+ *
-+ * Returns: %TRUE if the format is supported.
-+ */
-+gboolean
-+gst_egl_image_check_dmabuf_direct (GstGLContext * context,
-+ GstVideoInfo * in_info)
- {
- EGLDisplay egl_display = EGL_DEFAULT_DISPLAY;
- GstGLDisplayEGL *display_egl;
-@@ -684,6 +697,7 @@ _gst_egl_image_check_dmabuf_direct (GstGLContext * context, int fourcc)
- EGLBoolean *external_only;
- int num_modifiers;
- gboolean ret;
-+ int fourcc;
- int i;
-
- EGLBoolean (*gst_eglQueryDmaBufFormatsEXT) (EGLDisplay dpy,
-@@ -692,6 +706,10 @@ _gst_egl_image_check_dmabuf_direct (GstGLContext * context, int fourcc)
- int format, int max_modifiers, EGLuint64KHR * modifiers,
- EGLBoolean * external_only, int *num_modifiers);
-
-+ fourcc = _drm_direct_fourcc_from_info (in_info);
-+ if (fourcc == -1)
-+ return FALSE;
-+
- gst_eglQueryDmaBufFormatsEXT =
- gst_gl_context_get_proc_address (context, "eglQueryDmaBufFormatsEXT");
- gst_eglQueryDmaBufModifiersEXT =
-@@ -812,13 +830,10 @@ gst_egl_image_from_dmabuf_direct (GstGLContext * context,
- guintptr attribs[41]; /* 6 + 10 * 3 + 4 + 1 */
- gint atti = 0;
-
-- fourcc = _drm_direct_fourcc_from_info (in_info);
-- if (fourcc == -1)
-- return NULL;
--
-- if (!_gst_egl_image_check_dmabuf_direct (context, fourcc))
-+ if (!gst_egl_image_check_dmabuf_direct (context, in_info))
- return NULL;
-
-+ fourcc = _drm_direct_fourcc_from_info (in_info);
- with_modifiers = gst_gl_context_check_feature (context,
- "EGL_EXT_image_dma_buf_import_with_modifiers");
-
-diff --git a/gst-libs/gst/gl/egl/gsteglimage_private.h b/gst-libs/gst/gl/egl/gsteglimage_private.h
-new file mode 100644
-index 000000000..8326bdd05
---- /dev/null
-+++ b/gst-libs/gst/gl/egl/gsteglimage_private.h
-@@ -0,0 +1,35 @@
-+/*
-+ * GStreamer
-+ * Copyright (C) 2020 Igalia S.L.
-+ *
-+ * This library is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU Library General Public
-+ * License as published by the Free Software Foundation; either
-+ * version 2 of the License, or (at your option) any later version.
-+ *
-+ * This library is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ * Library General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU Library General Public
-+ * License along with this library; if not, write to the
-+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
-+ * Boston, MA 02110-1301, USA.
-+ */
-+
-+#ifndef _GST_EGL_IMAGE_PRIVATE_H_
-+#define _GST_EGL_IMAGE_PRIVATE_H_
-+
-+#include <gst/gl/gstgl_fwd.h>
-+#include <gst/gl/gstglformat.h>
-+
-+G_BEGIN_DECLS
-+
-+G_GNUC_INTERNAL
-+gboolean gst_egl_image_check_dmabuf_direct (GstGLContext * context,
-+ GstVideoInfo * in_info);
-+
-+G_END_DECLS
-+
-+#endif /* _GST_EGL_IMAGE_PRIVATE_H_ */
-diff --git a/gst-libs/gst/gl/gstglupload.c b/gst-libs/gst/gl/gstglupload.c
-index e3e02ebb7..7d19f683a 100644
---- a/gst-libs/gst/gl/gstglupload.c
-+++ b/gst-libs/gst/gl/gstglupload.c
-@@ -30,6 +30,7 @@
-
- #if GST_GL_HAVE_PLATFORM_EGL
- #include "egl/gsteglimage.h"
-+#include "egl/gsteglimage_private.h"
- #include "egl/gstglmemoryegl.h"
- #include "egl/gstglcontext_egl.h"
- #endif
-@@ -691,9 +692,12 @@ _dma_buf_upload_accept (gpointer impl, GstBuffer * buffer, GstCaps * in_caps,
- fd[i] = gst_dmabuf_memory_get_fd (mems[i]);
- }
-
-- if (dmabuf->direct)
-+ if (dmabuf->direct) {
-+ /* Check if this format is supported by the driver */
- dmabuf->n_mem = 1;
-- else
-+ if (!gst_egl_image_check_dmabuf_direct (dmabuf->upload->context, in_info))
-+ return FALSE;
-+ } else
- dmabuf->n_mem = n_planes;
-
- /* Now create an EGLImage for each dmabufs */
-@@ -755,6 +759,15 @@ _dma_buf_upload_perform (gpointer impl, GstBuffer * buffer, GstBuffer ** outbuf)
- {
- struct DmabufUpload *dmabuf = impl;
-
-+ /* The direct path sets sinkpad caps to RGBA but this may be incorrect for
-+ * the non-direct path, if that path fails to accept. In that case, we need
-+ * to reconfigure.
-+ */
-+ if (!dmabuf->direct &&
-+ GST_VIDEO_INFO_FORMAT (&dmabuf->upload->priv->in_info) !=
-+ GST_VIDEO_INFO_FORMAT (&dmabuf->out_info))
-+ return GST_GL_UPLOAD_RECONFIGURE;
-+
- gst_gl_context_thread_add (dmabuf->upload->context,
- (GstGLContextThreadFunc) _dma_buf_upload_perform_gl_thread, dmabuf);
-
---
-2.25.1
-
Deleted: trunk/Tools/buildstream/patches/gst-plugins-base-0001-oggstream-Workaround-for-broken-PAR-in-VP8-BOS.patch (267138 => 267139)
--- trunk/Tools/buildstream/patches/gst-plugins-base-0001-oggstream-Workaround-for-broken-PAR-in-VP8-BOS.patch 2020-09-16 07:08:03 UTC (rev 267138)
+++ trunk/Tools/buildstream/patches/gst-plugins-base-0001-oggstream-Workaround-for-broken-PAR-in-VP8-BOS.patch 2020-09-16 07:10:23 UTC (rev 267139)
@@ -1,32 +0,0 @@
-From 2e40379e7ace9c43d9edebe9556b37b541c67da7 Mon Sep 17 00:00:00 2001
-From: Philippe Normand <[email protected]>
-Date: Mon, 13 Jan 2020 09:06:02 +0000
-Subject: [PATCH] oggstream: Workaround for broken PAR in VP8 BOS
-
-Similarily to the Theora mapping, process 0:N, N:0 and 0:0 pixel aspect ratios
-as 1:1.
-
-Fixes #719
----
- ext/ogg/gstoggstream.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/ext/ogg/gstoggstream.c b/ext/ogg/gstoggstream.c
-index cdb6fa6ad..3894ae741 100644
---- a/ext/ogg/gstoggstream.c
-+++ b/ext/ogg/gstoggstream.c
-@@ -677,6 +677,11 @@ setup_vp8_mapper (GstOggStream * pad, ogg_packet * packet)
- pad->n_header_packets = 2;
- pad->frame_size = 1;
-
-+ /* PAR of 0:N, N:0 and 0:0 is not explicitely allowed, but the best we can do
-+ * here is to map to 1:1 so that caps negotiation doesn't break downstream. */
-+ if (par_n == 0 || par_d == 0)
-+ par_n = par_d = 1;
-+
- pad->caps = gst_caps_new_simple ("video/x-vp8",
- "width", G_TYPE_INT, width,
- "height", G_TYPE_INT, height,
---
-2.26.2
-
Deleted: trunk/Tools/buildstream/patches/gst-plugins-base-0001-playbin-Handle-error-message-with-redirection-indica.patch (267138 => 267139)
--- trunk/Tools/buildstream/patches/gst-plugins-base-0001-playbin-Handle-error-message-with-redirection-indica.patch 2020-09-16 07:08:03 UTC (rev 267138)
+++ trunk/Tools/buildstream/patches/gst-plugins-base-0001-playbin-Handle-error-message-with-redirection-indica.patch 2020-09-16 07:10:23 UTC (rev 267139)
@@ -1,100 +0,0 @@
-From 6e503b6e34000a18a49d2966df2c01c2ef14bd5c Mon Sep 17 00:00:00 2001
-From: Thibault Saunier <[email protected]>
-Date: Tue, 3 Sep 2019 16:03:49 -0400
-Subject: [PATCH] playbin: Handle error message with redirection indication
-
-There are in the wild (mp4) streams that basically contain no tracks
-but do have a redirect info[0], in which case, qtdemux won't be able
-to expose any pad (there are no tracks) so can't post anything but
-an error on the bus, as:
- - it can't send EOS downstream, it has no pad,
- - posting an EOS message will be useless as PAUSED state can't be
- reached and there is no sink in the pipeline meaning GstBin will
- simply ignore it
-
-In that case, currently the application could try to handle that but it
-is pretty complex as it will get the REDIRECT message on the bus at
-which point it could set the URL but playbin will ignore it, as
-it will only be for the next EOS, it thus need to set the pipeline to
-NULL (READY won't do as it is already in READY at that point). And it
-needs to figure out the following ERROR message on the bus needs to be
-ignored, which is not really simple.
-
-The approach here is to allow element to add details to the ERROR
-message with a `redirect-location` field which elements like playbin handle
-and use right away.
-
-We could also use the element 'redirect' message in playbin, but the
-issue with that approach is that the element will still emit the ERROR
-message on the bus, leading to wrong behaviour. That can't be avoided
-since in the case the app/parent pipeline is not handling the redirect
-instruction, the ERROR message is necessary (and there is no way to
-detect that the message has been "handled" from the element emitting the
-redirect).
-
-[0]: http://movietrailers.apple.com/movies/paramount/terminator-dark-fate/terminator-dark-fate-trailer-2_480p.mov
----
- gst/playback/gstplaybin2.c | 40 ++++++++++++++++++++++++++++++++++++++
- 1 file changed, 40 insertions(+)
-
-diff --git a/gst/playback/gstplaybin2.c b/gst/playback/gstplaybin2.c
-index c8bfd388e..6997a957c 100644
---- a/gst/playback/gstplaybin2.c
-+++ b/gst/playback/gstplaybin2.c
-@@ -170,6 +170,10 @@
- * type. The new location may be a relative or an absolute URI. Examples
- * for such redirects can be found in many quicktime movie trailers.
- *
-+ * NOTE: playbin will internally handle the redirect messages in the case
-+ * that the redirecting stream doesn't contain any tracks and thus
-+ * needs to report an error message on the bus.
-+ *
- * ## Examples
- * |[
- * gst-launch-1.0 -v playbin uri=file:///path/to/somefile.mp4
-@@ -3025,6 +3029,42 @@ gst_play_bin_handle_message (GstBin * bin, GstMessage * msg)
- no_more_pads_cb (NULL, group);
- }
- }
-+ } else {
-+ const GstStructure *details = NULL;
-+
-+ gst_message_parse_error_details (msg, &details);
-+ if (details && gst_structure_has_field (details, "redirect-location")) {
-+ gchar *uri = NULL;
-+ const gchar *location =
-+ gst_structure_get_string ((GstStructure *) details,
-+ "redirect-location");
-+
-+ if (gst_uri_is_valid (location)) {
-+ uri = g_strdup (location);
-+ } else {
-+ uri = gst_uri_join_strings (group->uri, location);
-+ }
-+
-+ if (g_strcmp0 (uri, group->uri)) {
-+ GST_PLAY_BIN_LOCK (playbin);
-+ if (playbin->next_group && playbin->next_group->valid) {
-+ GST_DEBUG_OBJECT (playbin,
-+ "User already setup next uri %s, using it",
-+ playbin->next_group->uri);
-+ } else {
-+ GST_DEBUG_OBJECT (playbin,
-+ "Using newly configured redirect URI: %s", uri);
-+ gst_play_bin_set_uri (playbin, uri);
-+ }
-+ GST_PLAY_BIN_UNLOCK (playbin);
-+
-+ setup_next_source (playbin, GST_STATE_PAUSED);
-+ gst_message_unref (msg);
-+ msg = NULL;
-+ }
-+
-+ g_free (uri);
-+ }
- }
- }
-
---
-2.21.0
-
Deleted: trunk/Tools/buildstream/patches/gst-plugins-base-0002-glupload-fix-segfault.patch (267138 => 267139)
--- trunk/Tools/buildstream/patches/gst-plugins-base-0002-glupload-fix-segfault.patch 2020-09-16 07:08:03 UTC (rev 267138)
+++ trunk/Tools/buildstream/patches/gst-plugins-base-0002-glupload-fix-segfault.patch 2020-09-16 07:10:23 UTC (rev 267139)
@@ -1,53 +0,0 @@
-From a91ab7908955aa57f4c9ca52765d7cbe1cf5e71f Mon Sep 17 00:00:00 2001
-From: Haihao Xiang <[email protected]>
-Date: Thu, 26 Mar 2020 13:46:56 +0800
-Subject: [PATCH 2/2] glupload: fix segfault
-
-Without this fix, it is possible that outbuf is not initialized, which
-will result in segfault when call gst_buffer_replace (&outbuf, NULL). In
-addition, the patch fixes potential memory leak in restart path.
-
-The segfault can be reproduced by the pipeline below:
-
-GST_GL_PLATFORM=egl \
-gst-launch-1.0 videotestsrc ! msdkh265enc ! msdkh265dec ! \
-'video/x-raw(memory:DMABuf)' ! glimagesink
-
-https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/619
----
- gst-libs/gst/gl/gstglupload.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/gst-libs/gst/gl/gstglupload.c b/gst-libs/gst/gl/gstglupload.c
-index 7d19f683a..2ef00a49b 100644
---- a/gst-libs/gst/gl/gstglupload.c
-+++ b/gst-libs/gst/gl/gstglupload.c
-@@ -1975,7 +1975,7 @@ gst_gl_upload_perform_with_buffer (GstGLUpload * upload, GstBuffer * buffer,
- GstBuffer ** outbuf_ptr)
- {
- GstGLUploadReturn ret = GST_GL_UPLOAD_ERROR;
-- GstBuffer *outbuf;
-+ GstBuffer *outbuf = NULL;
- gpointer last_impl = upload->priv->method_impl;
-
- g_return_val_if_fail (GST_IS_GL_UPLOAD (upload), FALSE);
-@@ -2016,6 +2016,8 @@ restart:
- break;
- }
- }
-+
-+ gst_buffer_replace (&outbuf, NULL);
- goto restart;
- } else if (ret == GST_GL_UPLOAD_DONE || ret == GST_GL_UPLOAD_RECONFIGURE) {
- if (last_impl != upload->priv->method_impl) {
-@@ -2030,6 +2032,7 @@ restart:
- /* we are done */
- } else {
- upload->priv->method_impl = NULL;
-+ gst_buffer_replace (&outbuf, NULL);
- NEXT_METHOD;
- }
-
---
-2.25.1
-
Deleted: trunk/Tools/buildstream/patches/gst-plugins-base-0003-glbasefilter-add-support-for-changing-the-display.patch (267138 => 267139)
--- trunk/Tools/buildstream/patches/gst-plugins-base-0003-glbasefilter-add-support-for-changing-the-display.patch 2020-09-16 07:08:03 UTC (rev 267138)
+++ trunk/Tools/buildstream/patches/gst-plugins-base-0003-glbasefilter-add-support-for-changing-the-display.patch 2020-09-16 07:10:23 UTC (rev 267139)
@@ -1,660 +0,0 @@
-From 56d9fb13f93abbf5aa5af81e39ae73642016fe95 Mon Sep 17 00:00:00 2001
-From: Matthew Waters <[email protected]>
-Date: Wed, 5 Feb 2020 12:26:54 +1100
-Subject: [PATCH] glbasefilter: add support for changing the display
-
-Each element will remove its usage of the old display and context and
-try to retrieve a new GL context.
----
- ext/gl/gstglcolorconvertelement.c | 44 ++++---
- gst-libs/gst/gl/gstglbasefilter.c | 195 ++++++++++++++++++++++--------
- gst-libs/gst/gl/gstglbasefilter.h | 4 +
- tests/check/elements/glfilter.c | 131 ++++++++++++++++++++
- tests/check/meson.build | 1 +
- 5 files changed, 310 insertions(+), 65 deletions(-)
- create mode 100644 tests/check/elements/glfilter.c
-
-diff --git a/ext/gl/gstglcolorconvertelement.c b/ext/gl/gstglcolorconvertelement.c
-index 25e7daab9..256e5ef5a 100644
---- a/ext/gl/gstglcolorconvertelement.c
-+++ b/ext/gl/gstglcolorconvertelement.c
-@@ -36,15 +36,14 @@ G_DEFINE_TYPE_WITH_CODE (GstGLColorConvertElement, gst_gl_color_convert_element,
- "glconvertelement", 0, "convert");
- );
-
--static gboolean gst_gl_color_convert_element_set_caps (GstBaseTransform * bt,
-- GstCaps * in_caps, GstCaps * out_caps);
-+static gboolean gst_gl_color_convert_element_gl_set_caps (GstGLBaseFilter *
-+ base_filter, GstCaps * in_caps, GstCaps * out_caps);
- static GstCaps *gst_gl_color_convert_element_transform_caps (GstBaseTransform *
- bt, GstPadDirection direction, GstCaps * caps, GstCaps * filter);
- static gboolean gst_gl_color_convert_element_get_unit_size (GstBaseTransform *
- trans, GstCaps * caps, gsize * size);
--static gboolean
--gst_gl_color_convert_element_filter_meta (GstBaseTransform * trans,
-- GstQuery * query, GType api, const GstStructure * params);
-+static gboolean gst_gl_color_convert_element_filter_meta (GstBaseTransform *
-+ trans, GstQuery * query, GType api, const GstStructure * params);
- static gboolean gst_gl_color_convert_element_decide_allocation (GstBaseTransform
- * trans, GstQuery * query);
- static GstFlowReturn
-@@ -52,8 +51,8 @@ gst_gl_color_convert_element_prepare_output_buffer (GstBaseTransform * bt,
- GstBuffer * inbuf, GstBuffer ** outbuf);
- static GstFlowReturn gst_gl_color_convert_element_transform (GstBaseTransform *
- bt, GstBuffer * inbuf, GstBuffer * outbuf);
--static GstCaps *gst_gl_color_convert_element_fixate_caps (GstBaseTransform *
-- bt, GstPadDirection direction, GstCaps * caps, GstCaps * othercaps);
-+static GstCaps *gst_gl_color_convert_element_fixate_caps (GstBaseTransform * bt,
-+ GstPadDirection direction, GstCaps * caps, GstCaps * othercaps);
- static GstStateChangeReturn
- gst_gl_color_convert_element_change_state (GstElement * element,
- GstStateChange transition);
-@@ -70,34 +69,33 @@ GST_STATIC_PAD_TEMPLATE ("sink",
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_GL_COLOR_CONVERT_VIDEO_CAPS));
-
--static gboolean
--gst_gl_color_convert_element_stop (GstBaseTransform * bt)
-+static void
-+gst_gl_color_convert_element_gl_stop (GstGLBaseFilter * filter)
- {
-- GstGLColorConvertElement *convert = GST_GL_COLOR_CONVERT_ELEMENT (bt);
-+ GstGLColorConvertElement *convert = GST_GL_COLOR_CONVERT_ELEMENT (filter);
-
- if (convert->convert) {
- gst_object_unref (convert->convert);
- convert->convert = NULL;
- }
-
-- return GST_BASE_TRANSFORM_CLASS (parent_class)->stop (bt);
-+ GST_GL_BASE_FILTER_CLASS (parent_class)->gl_stop (filter);
- }
-
- static void
- gst_gl_color_convert_element_class_init (GstGLColorConvertElementClass * klass)
- {
-+ GstGLBaseFilterClass *filter_class = GST_GL_BASE_FILTER_CLASS (klass);
- GstBaseTransformClass *bt_class = GST_BASE_TRANSFORM_CLASS (klass);
- GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
-
- bt_class->transform_caps = gst_gl_color_convert_element_transform_caps;
-- bt_class->set_caps = gst_gl_color_convert_element_set_caps;
- bt_class->get_unit_size = gst_gl_color_convert_element_get_unit_size;
- bt_class->filter_meta = gst_gl_color_convert_element_filter_meta;
- bt_class->decide_allocation = gst_gl_color_convert_element_decide_allocation;
- bt_class->prepare_output_buffer =
- gst_gl_color_convert_element_prepare_output_buffer;
- bt_class->transform = gst_gl_color_convert_element_transform;
-- bt_class->stop = gst_gl_color_convert_element_stop;
- bt_class->fixate_caps = gst_gl_color_convert_element_fixate_caps;
-
- bt_class->passthrough_on_same_caps = TRUE;
-@@ -113,6 +111,9 @@ gst_gl_color_convert_element_class_init (GstGLColorConvertElementClass * klass)
- "OpenGL color converter", "Filter/Converter/Video",
- "Converts between color spaces using OpenGL shaders",
- "Matthew Waters <[email protected]>");
-+
-+ filter_class->gl_stop = gst_gl_color_convert_element_gl_stop;
-+ filter_class->gl_set_caps = gst_gl_color_convert_element_gl_set_caps;
- }
-
- static void
-@@ -123,10 +124,14 @@ gst_gl_color_convert_element_init (GstGLColorConvertElement * convert)
- }
-
- static gboolean
--gst_gl_color_convert_element_set_caps (GstBaseTransform * bt,
-+gst_gl_color_convert_element_gl_set_caps (GstGLBaseFilter * base_filter,
- GstCaps * in_caps, GstCaps * out_caps)
- {
-- GstGLColorConvertElement *convert = GST_GL_COLOR_CONVERT_ELEMENT (bt);
-+ GstGLColorConvertElement *convert =
-+ GST_GL_COLOR_CONVERT_ELEMENT (base_filter);
-+
-+ if (!convert->convert && base_filter->context)
-+ convert->convert = gst_gl_color_convert_new (base_filter->context);
-
- if (!gst_gl_color_convert_set_caps (convert->convert, in_caps, out_caps))
- return FALSE;
-@@ -141,16 +146,21 @@ gst_gl_color_convert_element_transform_caps (GstBaseTransform * bt,
- GstGLColorConvertElement *convert = GST_GL_COLOR_CONVERT_ELEMENT (bt);
- GstGLBaseFilter *base_filter = GST_GL_BASE_FILTER (bt);
- GstGLContext *context;
-+ GstCaps *ret;
-
- if (base_filter->display && !gst_gl_base_filter_find_gl_context (base_filter))
- return NULL;
-
-- context = GST_GL_BASE_FILTER (bt)->context;
-+ context = gst_gl_base_filter_get_gl_context (base_filter);
-
- if (!convert->convert && context)
- convert->convert = gst_gl_color_convert_new (context);
-
-- return gst_gl_color_convert_transform_caps (context, direction, caps, filter);
-+ ret = gst_gl_color_convert_transform_caps (context, direction, caps, filter);
-+
-+ gst_clear_object (&context);
-+
-+ return ret;
- }
-
- static gboolean
-diff --git a/gst-libs/gst/gl/gstglbasefilter.c b/gst-libs/gst/gl/gstglbasefilter.c
-index 155d9002b..1d57b4051 100644
---- a/gst-libs/gst/gl/gstglbasefilter.c
-+++ b/gst-libs/gst/gl/gstglbasefilter.c
-@@ -48,6 +48,9 @@ struct _GstGLBaseFilterPrivate
-
- gboolean gl_result;
- gboolean gl_started;
-+
-+ GRecMutex context_lock;
-+ gboolean new_gl_context;
- };
-
- /* Properties */
-@@ -91,6 +94,8 @@ static void gst_gl_base_filter_gl_stop (GstGLContext * context, gpointer data);
- static gboolean gst_gl_base_filter_default_gl_start (GstGLBaseFilter * filter);
- static void gst_gl_base_filter_default_gl_stop (GstGLBaseFilter * filter);
-
-+static gboolean gst_gl_base_filter_find_gl_context_unlocked (GstGLBaseFilter *
-+ filter);
- static void
- gst_gl_base_filter_class_init (GstGLBaseFilterClass * klass)
- {
-@@ -131,6 +136,8 @@ gst_gl_base_filter_init (GstGLBaseFilter * filter)
- gst_base_transform_set_qos_enabled (GST_BASE_TRANSFORM (filter), TRUE);
-
- filter->priv = gst_gl_base_filter_get_instance_private (filter);
-+
-+ g_rec_mutex_init (&filter->priv->context_lock);
- }
-
- static void
-@@ -141,6 +148,8 @@ gst_gl_base_filter_finalize (GObject * object)
- gst_caps_replace (&filter->in_caps, NULL);
- gst_caps_replace (&filter->out_caps, NULL);
-
-+ g_rec_mutex_clear (&filter->priv->context_lock);
-+
- G_OBJECT_CLASS (parent_class)->finalize (object);
- }
-
-@@ -171,32 +180,30 @@ gst_gl_base_filter_get_property (GObject * object, guint prop_id,
- }
- }
-
--static void
--gst_gl_base_filter_set_context (GstElement * element, GstContext * context)
--{
-- GstGLBaseFilter *filter = GST_GL_BASE_FILTER (element);
-- GstGLBaseFilterClass *filter_class = GST_GL_BASE_FILTER_GET_CLASS (filter);
--
-- GST_OBJECT_LOCK (filter);
-- gst_gl_handle_set_context (element, context, &filter->display,
-- &filter->priv->other_context);
-- if (filter->display)
-- gst_gl_display_filter_gl_api (filter->display,
-- filter_class->supported_gl_api);
-- GST_OBJECT_UNLOCK (filter);
--
-- GST_ELEMENT_CLASS (parent_class)->set_context (element, context);
--}
--
- static gboolean
- _find_local_gl_context (GstGLBaseFilter * filter)
- {
-+ GstGLContext *context = filter->context;
-+
- if (gst_gl_query_local_gl_context (GST_ELEMENT (filter), GST_PAD_SRC,
-- &filter->context))
-- return TRUE;
-+ &context)) {
-+ if (context->display == filter->display) {
-+ filter->context = context;
-+ return TRUE;
-+ }
-+ if (context != filter->context)
-+ gst_clear_object (&context);
-+ }
-+ context = filter->context;
- if (gst_gl_query_local_gl_context (GST_ELEMENT (filter), GST_PAD_SINK,
-- &filter->context))
-- return TRUE;
-+ &context)) {
-+ if (context->display == filter->display) {
-+ filter->context = context;
-+ return TRUE;
-+ }
-+ if (context != filter->context)
-+ gst_clear_object (&context);
-+ }
- return FALSE;
- }
-
-@@ -211,7 +218,9 @@ gst_gl_base_filter_query (GstBaseTransform * trans, GstPadDirection direction,
- {
- if (direction == GST_PAD_SINK
- && gst_base_transform_is_passthrough (trans)) {
-+ g_rec_mutex_lock (&filter->priv->context_lock);
- _find_local_gl_context (filter);
-+ g_rec_mutex_unlock (&filter->priv->context_lock);
-
- return gst_pad_peer_query (GST_BASE_TRANSFORM_SRC_PAD (trans), query);
- }
-@@ -220,10 +229,10 @@ gst_gl_base_filter_query (GstBaseTransform * trans, GstPadDirection direction,
- case GST_QUERY_CONTEXT:
- {
- gboolean ret;
-- GST_OBJECT_LOCK (filter);
-+ g_rec_mutex_lock (&filter->priv->context_lock);
- ret = gst_gl_handle_context_query ((GstElement *) filter, query,
- filter->display, filter->context, filter->priv->other_context);
-- GST_OBJECT_UNLOCK (filter);
-+ g_rec_mutex_unlock (&filter->priv->context_lock);
- if (ret)
- return TRUE;
- break;
-@@ -239,17 +248,14 @@ gst_gl_base_filter_query (GstBaseTransform * trans, GstPadDirection direction,
- static void
- gst_gl_base_filter_reset (GstGLBaseFilter * filter)
- {
-- GstGLBaseFilterClass *filter_class = GST_GL_BASE_FILTER_GET_CLASS (filter);
--
-+ g_rec_mutex_lock (&filter->priv->context_lock);
- if (filter->context) {
-- if (filter_class->gl_stop != NULL) {
-- gst_gl_context_thread_add (filter->context, gst_gl_base_filter_gl_stop,
-- filter);
-- }
--
-+ gst_gl_context_thread_add (filter->context, gst_gl_base_filter_gl_stop,
-+ filter);
- gst_object_unref (filter->context);
- filter->context = NULL;
- }
-+ g_rec_mutex_unlock (&filter->priv->context_lock);
- }
-
- static gboolean
-@@ -280,6 +286,7 @@ gst_gl_base_filter_gl_start (GstGLContext * context, gpointer data)
- GstGLBaseFilter *filter = GST_GL_BASE_FILTER (data);
- GstGLBaseFilterClass *filter_class = GST_GL_BASE_FILTER_GET_CLASS (filter);
-
-+ GST_INFO_OBJECT (filter, "starting");
- gst_gl_insert_debug_marker (filter->context,
- "starting element %s", GST_OBJECT_NAME (filter));
-
-@@ -297,6 +304,7 @@ gst_gl_base_filter_gl_stop (GstGLContext * context, gpointer data)
- GstGLBaseFilter *filter = GST_GL_BASE_FILTER (data);
- GstGLBaseFilterClass *filter_class = GST_GL_BASE_FILTER_GET_CLASS (filter);
-
-+ GST_INFO_OBJECT (filter, "stopping");
- gst_gl_insert_debug_marker (filter->context,
- "stopping element %s", GST_OBJECT_NAME (filter));
-
-@@ -311,33 +319,53 @@ _gl_set_caps (GstGLContext * context, GstGLBaseFilter * filter)
- {
- GstGLBaseFilterClass *filter_class = GST_GL_BASE_FILTER_GET_CLASS (filter);
-
-+ GST_INFO_OBJECT (filter, "set GL caps input %" GST_PTR_FORMAT,
-+ filter->in_caps);
-+ GST_INFO_OBJECT (filter, "set GL caps output %" GST_PTR_FORMAT,
-+ filter->out_caps);
-+
- if (filter_class->gl_set_caps)
- filter->priv->gl_result =
- filter_class->gl_set_caps (filter, filter->in_caps, filter->out_caps);
- }
-
- static gboolean
--gst_gl_base_filter_decide_allocation (GstBaseTransform * trans,
-- GstQuery * query)
-+gl_set_caps_unlocked (GstGLBaseFilter * filter)
- {
-- GstGLBaseFilter *filter = GST_GL_BASE_FILTER (trans);
- GstGLBaseFilterClass *filter_class = GST_GL_BASE_FILTER_GET_CLASS (filter);
-
-- if (!gst_gl_base_filter_find_gl_context (filter))
-- return FALSE;
--
- if (filter_class->gl_set_caps) {
- gst_gl_context_thread_add (filter->context,
- (GstGLContextThreadFunc) _gl_set_caps, filter);
-- if (!filter->priv->gl_result)
-- goto error;
-+ return filter->priv->gl_result;
- }
-
-+ return TRUE;
-+}
-+
-+static gboolean
-+gst_gl_base_filter_decide_allocation (GstBaseTransform * trans,
-+ GstQuery * query)
-+{
-+ GstGLBaseFilter *filter = GST_GL_BASE_FILTER (trans);
-+
-+ g_rec_mutex_lock (&filter->priv->context_lock);
-+ if (!gst_gl_base_filter_find_gl_context_unlocked (filter)) {
-+ g_rec_mutex_unlock (&filter->priv->context_lock);
-+ return FALSE;
-+ }
-+
-+ if (!gl_set_caps_unlocked (filter))
-+ goto error;
-+
-+ g_rec_mutex_unlock (&filter->priv->context_lock);
-+
- return GST_BASE_TRANSFORM_CLASS (parent_class)->decide_allocation (trans,
- query);
-
- error:
- {
-+ g_rec_mutex_unlock (&filter->priv->context_lock);
- GST_ELEMENT_ERROR (trans, LIBRARY, INIT,
- ("Subclass failed to initialize."), (NULL));
- return FALSE;
-@@ -389,6 +417,7 @@ gst_gl_base_filter_change_state (GstElement * element,
-
- switch (transition) {
- case GST_STATE_CHANGE_READY_TO_NULL:
-+ g_rec_mutex_lock (&filter->priv->context_lock);
- if (filter->priv->other_context) {
- gst_object_unref (filter->priv->other_context);
- filter->priv->other_context = NULL;
-@@ -403,6 +432,7 @@ gst_gl_base_filter_change_state (GstElement * element,
- gst_object_unref (filter->context);
- filter->context = NULL;
- }
-+ g_rec_mutex_unlock (&filter->priv->context_lock);
- break;
- default:
- break;
-@@ -411,21 +441,49 @@ gst_gl_base_filter_change_state (GstElement * element,
- return ret;
- }
-
--/**
-- * gst_gl_base_filter_find_gl_context:
-- * @filter: a #GstGLBaseFilter
-- *
-- * Returns: Whether an OpenGL context could be retrieved or created successfully
-- *
-- * Since: 1.16
-- */
--gboolean
--gst_gl_base_filter_find_gl_context (GstGLBaseFilter * filter)
-+static void
-+gst_gl_base_filter_set_context (GstElement * element, GstContext * context)
-+{
-+ GstGLBaseFilter *filter = GST_GL_BASE_FILTER (element);
-+ GstGLBaseFilterClass *filter_class = GST_GL_BASE_FILTER_GET_CLASS (filter);
-+ GstGLDisplay *old_display, *new_display;
-+
-+ g_rec_mutex_lock (&filter->priv->context_lock);
-+ old_display = filter->display ? gst_object_ref (filter->display) : NULL;
-+ gst_gl_handle_set_context (element, context, &filter->display,
-+ &filter->priv->other_context);
-+ if (filter->display)
-+ gst_gl_display_filter_gl_api (filter->display,
-+ filter_class->supported_gl_api);
-+ new_display = filter->display ? gst_object_ref (filter->display) : NULL;
-+
-+ if (old_display && new_display) {
-+ if (old_display != new_display) {
-+ gst_clear_object (&filter->context);
-+ if (gst_gl_base_filter_find_gl_context_unlocked (filter)) {
-+ if (filter->in_caps && filter->out_caps) {
-+ gl_set_caps_unlocked (filter);
-+ }
-+ }
-+ }
-+ }
-+ g_rec_mutex_unlock (&filter->priv->context_lock);
-+ gst_clear_object (&old_display);
-+ gst_clear_object (&new_display);
-+
-+ GST_ELEMENT_CLASS (parent_class)->set_context (element, context);
-+}
-+
-+static gboolean
-+gst_gl_base_filter_find_gl_context_unlocked (GstGLBaseFilter * filter)
- {
- GstGLBaseFilterClass *filter_class = GST_GL_BASE_FILTER_GET_CLASS (filter);
- GError *error = NULL;
- gboolean new_context = FALSE;
-
-+ GST_DEBUG_OBJECT (filter, "attempting to find an OpenGL context, existing %"
-+ GST_PTR_FORMAT, filter->context);
-+
- if (!filter->context)
- new_context = TRUE;
-
-@@ -449,6 +507,8 @@ gst_gl_base_filter_find_gl_context (GstGLBaseFilter * filter)
- } while (!gst_gl_display_add_context (filter->display, filter->context));
- GST_OBJECT_UNLOCK (filter->display);
- }
-+ GST_INFO_OBJECT (filter, "found OpenGL context %" GST_PTR_FORMAT,
-+ filter->context);
-
- if (new_context || !filter->priv->gl_started) {
- if (filter->priv->gl_started)
-@@ -499,3 +559,42 @@ error:
- return FALSE;
- }
- }
-+
-+/**
-+ * gst_gl_base_filter_find_gl_context:
-+ * @filter: a #GstGLBaseFilter
-+ *
-+ * Returns: Whether an OpenGL context could be retrieved or created successfully
-+ *
-+ * Since: 1.16
-+ */
-+gboolean
-+gst_gl_base_filter_find_gl_context (GstGLBaseFilter * filter)
-+{
-+ gboolean ret;
-+ g_rec_mutex_lock (&filter->priv->context_lock);
-+ ret = gst_gl_base_filter_find_gl_context_unlocked (filter);
-+ g_rec_mutex_unlock (&filter->priv->context_lock);
-+ return ret;
-+}
-+
-+/**
-+ * gst_gl_base_filter_get_gl_context:
-+ * @filter: a #GstGLBaseFilter
-+ *
-+ * Returns: (transfer full) (nullable): the #GstGLContext found by @filter
-+ *
-+ * Since: 1.18
-+ */
-+GstGLContext *
-+gst_gl_base_filter_get_gl_context (GstGLBaseFilter * filter)
-+{
-+ GstGLContext *ret;
-+
-+ g_return_val_if_fail (GST_IS_GL_BASE_FILTER (filter), NULL);
-+
-+ g_rec_mutex_lock (&filter->priv->context_lock);
-+ ret = filter->context ? gst_object_ref (filter->context) : NULL;
-+ g_rec_mutex_unlock (&filter->priv->context_lock);
-+ return ret;
-+}
-diff --git a/gst-libs/gst/gl/gstglbasefilter.h b/gst-libs/gst/gl/gstglbasefilter.h
-index 15361ade1..57fb3df5b 100644
---- a/gst-libs/gst/gl/gstglbasefilter.h
-+++ b/gst-libs/gst/gl/gstglbasefilter.h
-@@ -70,6 +70,8 @@ struct _GstGLBaseFilter
- * @gl_start: called in the GL thread to setup the element GL state.
- * @gl_stop: called in the GL thread to setup the element GL state.
- * @gl_set_caps: called in the GL thread when caps are set on @filter.
-+ * Note: this will also be called when changing OpenGL contexts
-+ * where #GstBaseTransform::set_caps may not.
- *
- * The base class for GStreamer GL Filter.
- */
-@@ -90,6 +92,8 @@ struct _GstGLBaseFilterClass
-
- GST_GL_API
- gboolean gst_gl_base_filter_find_gl_context (GstGLBaseFilter * filter);
-+GST_GL_API
-+GstGLContext * gst_gl_base_filter_get_gl_context (GstGLBaseFilter * filter);
-
- G_END_DECLS
-
-diff --git a/tests/check/elements/glfilter.c b/tests/check/elements/glfilter.c
-new file mode 100644
-index 000000000..0d8d67687
---- /dev/null
-+++ b/tests/check/elements/glfilter.c
-@@ -0,0 +1,131 @@
-+/* GStreamer
-+ *
-+ * Copyright (C) 2019 Matthew Waters <[email protected]>
-+ *
-+ * This library is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU Library General Public
-+ * License as published by the Free Software Foundation; either
-+ * version 2 of the License, or (at your option) any later version.
-+ *
-+ * This library is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ * Library General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU Library General Public
-+ * License along with this library; if not, write to the
-+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
-+ * Boston, MA 02110-1301, USA.
-+ */
-+
-+
-+#ifdef HAVE_CONFIG_H
-+#include "config.h"
-+#endif
-+
-+#include <gst/gst.h>
-+#include <gst/gl/gl.h>
-+#include <gst/check/gstcheck.h>
-+#include <gst/check/gstharness.h>
-+
-+static void
-+replace_display (GstHarness * h)
-+{
-+ GstContext *new_context;
-+ GstGLDisplay *new_display;
-+ GstGLContext *expected, *gl_context;
-+ GstBuffer *buf;
-+
-+ /* replaces the GstGLDisplay used by @h with verification */
-+
-+ buf = gst_harness_create_buffer (h, 4);
-+ buf = gst_harness_push_and_pull (h, buf);
-+ fail_unless (buf != NULL);
-+ gst_clear_buffer (&buf);
-+
-+ g_object_get (G_OBJECT (h->element), "context", &gl_context, NULL);
-+ fail_unless (gl_context != NULL);
-+ gst_clear_object (&gl_context);
-+
-+ new_display = gst_gl_display_new ();
-+ fail_unless (gst_gl_display_create_context (new_display, NULL, &expected,
-+ NULL));
-+ fail_unless (expected != NULL);
-+ gst_gl_display_add_context (new_display, expected);
-+
-+ new_context = gst_context_new (GST_GL_DISPLAY_CONTEXT_TYPE, TRUE);
-+ gst_context_set_gl_display (new_context, new_display);
-+
-+ gst_element_set_context (h->element, new_context);
-+ gst_context_unref (new_context);
-+ new_context = NULL;
-+
-+ buf = gst_harness_create_buffer (h, 4);
-+ buf = gst_harness_push_and_pull (h, buf);
-+ fail_unless (buf != NULL);
-+ gst_clear_buffer (&buf);
-+
-+ g_object_get (G_OBJECT (h->element), "context", &gl_context, NULL);
-+ fail_unless (gl_context != NULL);
-+
-+ fail_unless (gl_context == expected);
-+ fail_unless (new_display == gl_context->display);
-+
-+ gst_object_unref (expected);
-+ gst_object_unref (gl_context);
-+ gst_object_unref (new_display);
-+}
-+
-+GST_START_TEST (test_glupload_display_replace)
-+{
-+ GstHarness *upload;
-+
-+ upload = gst_harness_new ("glupload");
-+ gst_harness_set_caps_str (upload, "video/x-raw,format=RGBA,width=1,height=1",
-+ "video/x-raw(memory:GLMemory),format=RGBA,width=1,height=1");
-+
-+ replace_display (upload);
-+
-+ gst_harness_teardown (upload);
-+}
-+
-+GST_END_TEST;
-+
-+GST_START_TEST (test_glcolorconvert_display_replace)
-+{
-+ GstHarness *convert;
-+
-+ convert = gst_harness_new ("glcolorconvert");
-+ gst_harness_set_caps_str (convert,
-+ "video/x-raw(memory:GLMemory),format=RGBA,width=1,height=1,texture-target=2D",
-+ "video/x-raw(memory:GLMemory),format=RGBA,width=1,height=1,texture-target=2D");
-+
-+ replace_display (convert);
-+
-+ gst_harness_teardown (convert);
-+}
-+
-+GST_END_TEST;
-+
-+static Suite *
-+glfilter_suite (void)
-+{
-+ Suite *s = suite_create ("glfilter");
-+ TCase *tc = tcase_create ("general");
-+
-+ tcase_add_test (tc, test_glupload_display_replace);
-+ tcase_add_test (tc, test_glcolorconvert_display_replace);
-+ suite_add_tcase (s, tc);
-+
-+ return s;
-+}
-+
-+int
-+main (int argc, char **argv)
-+{
-+ Suite *s;
-+ g_setenv ("GST_GL_XINITTHREADS", "1", TRUE);
-+ gst_check_init (&argc, &argv);
-+ s = glfilter_suite ();
-+ return gst_check_run_suite (s, "glfilter", __FILE__);
-+}
-diff --git a/tests/check/meson.build b/tests/check/meson.build
-index 31fb67f15..c3f5bdd9a 100644
---- a/tests/check/meson.build
-+++ b/tests/check/meson.build
-@@ -99,6 +99,7 @@ if build_gstgl and host_machine.system() != 'windows'
- [ 'elements/glimagesink.c', not build_gstgl, [gstgl_dep]],
- [ 'elements/glbin.c', not build_gstgl ],
- [ 'pipelines/gl-launch-lines.c', not build_gstgl ],
-+ [ 'elements/glfilter.c', not build_gstgl, [gstgl_dep]],
- ]
- endif
-
---
-2.25.4
-
Deleted: trunk/Tools/buildstream/patches/gst-plugins-good-qtdemux-Specify-REDIRECT-information-in-error-messag.patch (267138 => 267139)
--- trunk/Tools/buildstream/patches/gst-plugins-good-qtdemux-Specify-REDIRECT-information-in-error-messag.patch 2020-09-16 07:08:03 UTC (rev 267138)
+++ trunk/Tools/buildstream/patches/gst-plugins-good-qtdemux-Specify-REDIRECT-information-in-error-messag.patch 2020-09-16 07:10:23 UTC (rev 267139)
@@ -1,140 +0,0 @@
-From a55576d1fd25c7d67661630fc94367908802a496 Mon Sep 17 00:00:00 2001
-From: Thibault Saunier <[email protected]>
-Date: Tue, 3 Sep 2019 16:46:30 -0400
-Subject: [PATCH] qtdemux: Specify REDIRECT information in error message
-
-There are in the wild (mp4) streams that basically contain no tracks
-but do have a redirect info[0], in which case, we won't be able
-to expose any pad (there are no tracks) so we can't post anything but
-an error on the bus, as:
-
-- it can't send EOS downstream, it has no pad,
-- posting an EOS message will be useless as PAUSED state can't be
- reached and there is no sink in the pipeline meaning GstBin will
- simply ignore it
-
-The approach here is to to add details to the ERROR message with a
-`redirect-location` field which elements like playbin handle and use right
-away.
-
-[0]: http://movietrailers.apple.com/movies/paramount/terminator-dark-fate/terminator-dark-fate-trailer-2_480p.mov
----
- gst/isomp4/qtdemux.c | 32 +++++++++++++++++++++++++-------
- gst/isomp4/qtdemux.h | 2 +-
- 2 files changed, 26 insertions(+), 8 deletions(-)
-
-diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c
-index ba4d43648..8a6bf08c7 100644
---- a/gst/isomp4/qtdemux.c
-+++ b/gst/isomp4/qtdemux.c
-@@ -526,6 +526,7 @@ GST_STATIC_PAD_TEMPLATE ("subtitle_%u",
- G_DEFINE_TYPE (GstQTDemux, gst_qtdemux, GST_TYPE_ELEMENT);
-
- static void gst_qtdemux_dispose (GObject * object);
-+static void gst_qtdemux_finalize (GObject * object);
-
- static guint32
- gst_qtdemux_find_index_linear (GstQTDemux * qtdemux, QtDemuxStream * str,
-@@ -628,6 +629,7 @@ gst_qtdemux_class_init (GstQTDemuxClass * klass)
- parent_class = g_type_class_peek_parent (klass);
-
- gobject_class->dispose = gst_qtdemux_dispose;
-+ gobject_class->finalize = gst_qtdemux_finalize;
-
- gstelement_class->change_state = GST_DEBUG_FUNCPTR (gst_qtdemux_change_state);
- #if 0
-@@ -683,6 +685,16 @@ gst_qtdemux_init (GstQTDemux * qtdemux)
- gst_qtdemux_reset (qtdemux, TRUE);
- }
-
-+static void
-+gst_qtdemux_finalize (GObject * object)
-+{
-+ GstQTDemux *qtdemux = GST_QTDEMUX (object);
-+
-+ g_free (qtdemux->redirect_location);
-+
-+ G_OBJECT_CLASS (parent_class)->finalize (object);
-+}
-+
- static void
- gst_qtdemux_dispose (GObject * object)
- {
-@@ -711,10 +723,11 @@ gst_qtdemux_dispose (GObject * object)
- static void
- gst_qtdemux_post_no_playable_stream_error (GstQTDemux * qtdemux)
- {
-- if (qtdemux->posted_redirect) {
-- GST_ELEMENT_ERROR (qtdemux, STREAM, DEMUX,
-+ if (qtdemux->redirect_location) {
-+ GST_ELEMENT_ERROR_WITH_DETAILS (qtdemux, STREAM, DEMUX,
- (_("This file contains no playable streams.")),
-- ("no known streams found, a redirect message has been posted"));
-+ ("no known streams found, a redirect message has been posted"),
-+ ("redirect-location", G_TYPE_STRING, qtdemux->redirect_location, NULL));
- } else {
- GST_ELEMENT_ERROR (qtdemux, STREAM, DEMUX,
- (_("This file contains no playable streams.")),
-@@ -2111,7 +2124,7 @@ gst_qtdemux_reset (GstQTDemux * qtdemux, gboolean hard)
- qtdemux->neededbytes = 16;
- qtdemux->todrop = 0;
- qtdemux->pullbased = FALSE;
-- qtdemux->posted_redirect = FALSE;
-+ g_clear_pointer (&qtdemux->redirect_location, g_free);
- qtdemux->first_mdat = -1;
- qtdemux->header_size = 0;
- qtdemux->mdatoffset = -1;
-@@ -6065,11 +6078,12 @@ gst_qtdemux_decorate_and_push_buffer (GstQTDemux * qtdemux,
- gst_buffer_unmap (buf, &map);
- if (url != NULL && strlen (url) != 0) {
- /* we have RTSP redirect now */
-+ g_free (qtdemux->redirect_location);
-+ qtdemux->redirect_location = g_strdup (url);
- gst_element_post_message (GST_ELEMENT_CAST (qtdemux),
- gst_message_new_element (GST_OBJECT_CAST (qtdemux),
- gst_structure_new ("redirect",
- "new-location", G_TYPE_STRING, url, NULL)));
-- qtdemux->posted_redirect = TRUE;
- } else {
- GST_WARNING_OBJECT (qtdemux, "Redirect URI of stream is empty, not "
- "posting");
-@@ -12915,7 +12929,9 @@ qtdemux_expose_streams (GstQTDemux * qtdemux)
- "new-location", G_TYPE_STRING,
- QTDEMUX_NTH_STREAM (qtdemux, 0)->redirect_uri, NULL));
- gst_element_post_message (GST_ELEMENT_CAST (qtdemux), m);
-- qtdemux->posted_redirect = TRUE;
-+ g_free (qtdemux->redirect_location);
-+ qtdemux->redirect_location =
-+ g_strdup (QTDEMUX_NTH_STREAM (qtdemux, 0)->redirect_uri);
- }
-
- g_ptr_array_foreach (qtdemux->active_streams,
-@@ -13968,9 +13984,11 @@ qtdemux_process_redirects (GstQTDemux * qtdemux, GList * references)
- g_list_free (references);
-
- GST_INFO_OBJECT (qtdemux, "posting redirect message: %" GST_PTR_FORMAT, s);
-+ g_free (qtdemux->redirect_location);
-+ qtdemux->redirect_location =
-+ g_strdup (gst_structure_get_string (s, "new-location"));
- msg = gst_message_new_element (GST_OBJECT_CAST (qtdemux), s);
- gst_element_post_message (GST_ELEMENT_CAST (qtdemux), msg);
-- qtdemux->posted_redirect = TRUE;
- }
-
- /* look for redirect nodes, collect all redirect information and
-diff --git a/gst/isomp4/qtdemux.h b/gst/isomp4/qtdemux.h
-index f9731b2b8..c5e85c721 100644
---- a/gst/isomp4/qtdemux.h
-+++ b/gst/isomp4/qtdemux.h
-@@ -69,7 +69,7 @@ struct _GstQTDemux {
- /* TRUE if pull-based */
- gboolean pullbased;
-
-- gboolean posted_redirect;
-+ gchar *redirect_location;
-
- /* Protect pad exposing from flush event */
- GMutex expose_lock;
---
-2.21.0
-
Deleted: trunk/Tools/buildstream/patches/libav-0001-gstavviddec-Limit-default-number-of-decoder-threads.patch (267138 => 267139)
--- trunk/Tools/buildstream/patches/libav-0001-gstavviddec-Limit-default-number-of-decoder-threads.patch 2020-09-16 07:08:03 UTC (rev 267138)
+++ trunk/Tools/buildstream/patches/libav-0001-gstavviddec-Limit-default-number-of-decoder-threads.patch 2020-09-16 07:10:23 UTC (rev 267139)
@@ -1,42 +0,0 @@
-From b7d450b11834d0a510fdcb661ce105860338e2d6 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Alicia=20Boya=20Garc=C3=ADa?= <[email protected]>
-Date: Thu, 19 Dec 2019 17:58:56 +0100
-Subject: [PATCH] gstavviddec: Limit default number of decoder threads
-
-When the `max-threads` property is not specified, GStreamer defaults to
-the amount of CPU threads in the system.
-
-The number of threads used in avdec has a direct impact on the latency
-of the decoder, which is of as many frames as threads. Therefore, big
-numbers of threads can make latency levels that can be problematic in
-some applications.
-
-For this reason, ffmpeg emits a warning when more than 16 threads are
-requested.
-
-This patch limits the default number of threads to 16. This affects only
-computers with more than 16 CPU threads when using avviddec without
-setting `max-threads`.
-
-Backport for 1.16.1.
----
- ext/libav/gstavviddec.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/ext/libav/gstavviddec.c b/ext/libav/gstavviddec.c
-index 650de2d..edde934 100644
---- a/ext/libav/gstavviddec.c
-+++ b/ext/libav/gstavviddec.c
-@@ -494,7 +494,8 @@
-
- if (ffmpegdec->max_threads == 0) {
- if (!(oclass->in_plugin->capabilities & AV_CODEC_CAP_AUTO_THREADS))
-- ffmpegdec->context->thread_count = gst_ffmpeg_auto_max_threads ();
-+ ffmpegdec->context->thread_count =
-+ MIN (gst_ffmpeg_auto_max_threads (), 16);
- else
- ffmpegdec->context->thread_count = 0;
- } else
---
-2.23.0
-