[webkit-gtk] did 'glcolorconvert' element must be needed when play video ? seems low efficiency.
tugouxp
13824125580 at 163.com
Sat Jun 9 01:32:00 PDT 2018
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.
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("glcolorconvert", 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("video/x-raw(" GST_CAPS_FEATURE_MEMORY_GL_MEMORY "), format = (string) " GST_GL_CAPS_FORMAT));
1082
1083 result &= gst_element_link_pads(upload, "src", colorconvert, "sink");
1084 result &= gst_element_link_pads_filtered(colorconvert, "src", 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", pad.get()));
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-gtk/attachments/20180609/502eb904/attachment.html>
More information about the webkit-gtk
mailing list