[webkit-gtk] did 'glcolorconvert' element must be needed when play video ? seems low efficiency.
Philippe Normand
philn at igalia.com
Sat Jun 9 03:35:43 PDT 2018
On Sat, 2018-06-09 at 16:32 +0800, tugouxp wrote:
> hi folks:
>
> From the codes of webkitgtk, during the scenaric of playing
> streams , the 'glcolorconvert' would be linked to the
> pipeline unconditionally, which would do the YUV to RGB convert by
> software algo, it seems only support one diplay layer, the yuv
> picture must be mixed with GUI on one layer, it is a waste of cpu
> time.
>
That's incorrect. glcolorconvert performs the color conversion in GPU,
using a shader.
The textures created in the GStreamer pipeline are directly reused by
WebKit, there shouldn't be any performance bottleneck there.
Philippe
> why the webkitgtk suppports the mediaplayer function in the way like
> this? and if the display engine of the target platform has a seperate
> video layer which can directly show YUV format besides OSD layer,
> can the webkitgtk utilize
> the hardware advantage for supporting two layers?
>
> thanks for your kindly support.!
>
> 1054 GstElement* MediaPlayerPrivateGStreamerBase::createVideoSinkGL(
> )
> 1055 {
> 1056 if (!webkitGstCheckVersion(1, 8, 0))
> 1057 ¦ return nullptr;
> 1058
> 1059 gboolean result = TRUE;
> 1060 GstElement* videoSink = gst_bin_new(nullptr);
> 1061 GstElement* upload = gst_element_factory_make("glupload",
> nullptr);
> 1062 GstElement* colorconvert = gst_element_factory_make("glcol
> orconvert", nullptr);
> 1063 GstElement* appsink = createGLAppSink();
> 1064
> 1065 if (!appsink || !upload || !colorconvert) {
> 1066 ¦ GST_WARNING("Failed to create GstGL elements");
> 1067 ¦ gst_object_unref(videoSink);
> 1068
> 1069 ¦ if (upload)
> 1070 ¦ ¦ gst_object_unref(upload);
> 1071 ¦ if (colorconvert)
> 1072 ¦ ¦ gst_object_unref(colorconvert);
> 1073 ¦ if (appsink)
> 1074 ¦ ¦ gst_object_unref(appsink);
> 1075
> 1076 ¦ return nullptr;
> 1077 }
> 1078
> 1079 gst_bin_add_many(GST_BIN(videoSink), upload, colorconvert,
> appsink, nullptr);
> 1080
> 1081 GRefPtr<GstCaps> caps = adoptGRef(gst_caps_from_string("vi
> deo/x-
> raw(" GST_CAPS_FEATURE_MEMORY_GL_MEMORY "), format = (string) " GST_G
> L_CAPS_FORMAT));
> 1082
> 1083 result &= gst_element_link_pads(upload, "src", colorconver
> t, "sink");
> 1084 result &= gst_element_link_pads_filtered(colorconvert, "sr
> c", appsink, "sink", caps.get());
> 1085
> 1086 GRefPtr<GstPad> pad = adoptGRef(gst_element_get_static_pad
> (upload, "sink"));
> 1087 gst_element_add_pad(videoSink, gst_ghost_pad_new("sink", p
> ad.get()));
>
>
>
>
>
> _______________________________________________
> webkit-gtk mailing list
> webkit-gtk at lists.webkit.org
> https://lists.webkit.org/mailman/listinfo/webkit-gtk
More information about the webkit-gtk
mailing list