meta-digi/meta-digi-dey/dynamic-layers/webkit/recipes-browser/wpewebkit/wpewebkit/0001-Use-imxvideoconvert_g2...

43 lines
2.4 KiB
Diff

From: Gabriel Valcazar <gabriel.valcazar@digi.com>
Date: Wed, 21 Oct 2020 17:14:43 +0200
Subject: [PATCH] Use imxvideoconvert_g2d plugin in gstreamer pipeline
This element is necessary to view videos correctly on the i.MX8X
Signed-off-by: Gabriel Valcazar <gabriel.valcazar@digi.com>
---
.../platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/Source/WebCore/platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp b/Source/WebCore/platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp
index 8d8f3822..3e047ebb 100644
--- a/Source/WebCore/platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp
+++ b/Source/WebCore/platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp
@@ -93,11 +93,13 @@ static void webKitGLVideoSinkConstructed(GObject* object)
ASSERT(sink->priv->appSink);
g_object_set(sink->priv->appSink.get(), "enable-last-sample", FALSE, "emit-signals", TRUE, "max-buffers", 1, nullptr);
+ GstElement* imxconvert = gst_element_factory_make("imxvideoconvert_g2d", nullptr);
+ GstElement* queue = gst_element_factory_make("queue", nullptr);
GstElement* upload = gst_element_factory_make("glupload", nullptr);
GstElement* colorconvert = gst_element_factory_make("glcolorconvert", nullptr);
ASSERT(upload);
ASSERT(colorconvert);
- gst_bin_add_many(GST_BIN_CAST(sink), upload, colorconvert, sink->priv->appSink.get(), nullptr);
+ gst_bin_add_many(GST_BIN_CAST(sink), imxconvert, queue, upload, colorconvert, sink->priv->appSink.get(), nullptr);
// Workaround until we can depend on GStreamer 1.16.2.
// https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/commit/8d32de090554cf29fe359f83aa46000ba658a693
@@ -121,9 +123,9 @@ static void webKitGLVideoSinkConstructed(GObject* object)
gst_caps_set_features(caps.get(), 0, gst_caps_features_new(GST_CAPS_FEATURE_MEMORY_GL_MEMORY, nullptr));
g_object_set(sink->priv->appSink.get(), "caps", caps.get(), nullptr);
- gst_element_link_many(upload, colorconvert, sink->priv->appSink.get(), nullptr);
+ gst_element_link_many(imxconvert, queue, upload, colorconvert, sink->priv->appSink.get(), nullptr);
- GRefPtr<GstPad> pad = adoptGRef(gst_element_get_static_pad(upload, "sink"));
+ GRefPtr<GstPad> pad = adoptGRef(gst_element_get_static_pad(imxconvert, "sink"));
gst_element_add_pad(GST_ELEMENT_CAST(sink), gst_ghost_pad_new("sink", pad.get()));
}