[webkit-gtk] Video tag cant display rightly with 'createVideoSinkGL' sink on 2.20.2 package?

Philippe Normand philn at igalia.com
Tue Jun 5 01:49:17 PDT 2018


I don’t see outstanding errors, playback seems to work, there’s a video decoder error but I’m not sure it’s relevant…
Did you really enable OpenGL in packageconfig? 
What is your platform exactly? which GPU? which GL driver?



> On 5 Jun 2018, at 04:19, tugouxp <13824125580 at 163.com> wrote:
> 
> hi brothers:
> 
>    thanks for your advice.
>    and i do the test as you said, got the logfile.
>    the attachment is the log file ,please notice.
>    thanks for your good advice again!
> 
> 
> 
> 
> At 2018-06-04 21:23:56, "Philippe Normand" <philn at igalia.com> wrote:
> Ah ok, if you have waylandsink working too, I think you can try with WebKit now, set these env vars:
> 
> export GST_DEBUG=“3,webkit*:6”
> export GST_DEBUG_FILE=gst.log
> 
> then run the browser and try to play a video and send the gst.log file.
> 
> Philippe
> 
>> On 4 Jun 2018, at 14:14, 13824125580 <13824125580 at 163.com <mailto:13824125580 at 163.com>> wrote:
>> 
>> so the appsink cannt be changed,right?my project is based on wayland display backend,i found  the waylandsink works fine with gst_play,so,the appsink also take wayland as its display backend,is it?
>> 
>> 
>> 
>> 发自我的小米手机
>> 在 Philippe Normand <philn at igalia.com <mailto:philn at igalia.com>>,2018年6月4日 下午8:41写道:
>> 
>> I asked you to test gst-play with glimagesink first so as to discard GStreamer issues. If that works well on your platform, move on to WebKit testing.
>> The appsink we use in WebKit behaves similarly to glimagesink.
>> 
>> Philippe
>> 
>>> On 4 Jun 2018, at 13:25, tugouxp <13824125580 at 163.com <mailto:13824125580 at 163.com>> wrote:
>>> 
>>> hi brother:
>>> 
>>>    thanks for your suggestions and i do the updating at once.
>>> 
>>> by the way, the webkit select "appsink" higher precedence than "webkit video sink", in the last mail, you suggest me "glimagesink" too,
>>> 
>>> but which sinker should be select in webkit framework for my problem ? did any relationsbetween appsink and glimagesink,  did the appsink is just a wrapper of glimagesink,
>>> so we can know  whether the appsink works right by testing the glimagesink directly?
>>> 
>>> thanks for your kindly supoort.
>>> 
>>> 
>>> 
>>> At 2018-06-04 19:21:27, "Philippe Normand" <philn at igalia.com <mailto:philn at igalia.com>> wrote:
>>> gst-gl is part of gst-plugins-base in that version of GStreamer. You’re using a pre-release though, I advise to upgrade to 1.14.
>>> 
>>> Philippe
>>> 
>>>> On 4 Jun 2018, at 12:13, tugouxp <13824125580 at 163.com <mailto:13824125580 at 163.com>> wrote:
>>>> 
>>>> Hi brother:
>>>> 
>>>> sorry for fogotten the cc thing.
>>>> my gst version is  "1.13.90",  from the official webkit ,i only found the "gst-plugins-gl-0.10.3.tar.gz" seems like  "gstreamer_gl" you said , but the version seems did not match with the gstrreamer, and the latest update day is 2012,.
>>>> is this the gl package you said?
>>>> 
>>>> much appreciate your help.
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> At 2018-06-04 18:51:07, "Philippe Normand" <philn at igalia.com <mailto:philn at igalia.com>> wrote:
>>>> When replying please keep the mailing list in CC to To: fields...
>>>> 
>>>>> On 4 Jun 2018, at 10:04, tugouxp <13824125580 at 163.com <mailto:13824125580 at 163.com>> wrote:
>>>>> 
>>>>> hi folks :
>>>>> 
>>>>>  My project is  based on yoccto 2.5 project, with the  kernel version is  4.9 and webkit is 2.20.2.
>>>>> 
>>>>> a part of my bb file is as follows, so you can see , the display window show normal only if the opengl and gst_gl must be deleted.
>>>>> 53 <http://gerrit.allwinnertech.com:8081/gitweb?p=product/tina-yocto/meta-tina.git;a=blob;f=recipes-webkit/webkitgtk-2.20.2/webkitgtk_2.20.2.bb;h=bb12762c0d9f6f41a5dab294eaeca57e3675fda1;hb=refs/heads/tina-dev#l53>
>>>>> 54 <http://gerrit.allwinnertech.com:8081/gitweb?p=product/tina-yocto/meta-tina.git;a=blob;f=recipes-webkit/webkitgtk-2.20.2/webkitgtk_2.20.2.bb;h=bb12762c0d9f6f41a5dab294eaeca57e3675fda1;hb=refs/heads/tina-dev#l54> #PACKAGECONFIG ??= "wayland opengl gles2 webcrypto gst_gl"
>>>>> 55 <http://gerrit.allwinnertech.com:8081/gitweb?p=product/tina-yocto/meta-tina.git;a=blob;f=recipes-webkit/webkitgtk-2.20.2/webkitgtk_2.20.2.bb;h=bb12762c0d9f6f41a5dab294eaeca57e3675fda1;hb=refs/heads/tina-dev#l55> PACKAGECONFIG ??= "wayland gles2 webcrypto"
>>>>> 56 <http://gerrit.allwinnertech.com:8081/gitweb?p=product/tina-yocto/meta-tina.git;a=blob;f=recipes-webkit/webkitgtk-2.20.2/webkitgtk_2.20.2.bb;h=bb12762c0d9f6f41a5dab294eaeca57e3675fda1;hb=refs/heads/tina-dev#l56>
>>>>> 57 <http://gerrit.allwinnertech.com:8081/gitweb?p=product/tina-yocto/meta-tina.git;a=blob;f=recipes-webkit/webkitgtk-2.20.2/webkitgtk_2.20.2.bb;h=bb12762c0d9f6f41a5dab294eaeca57e3675fda1;hb=refs/heads/tina-dev#l57> PACKAGECONFIG[wayland] = "-DENABLE_WAYLAND_TARGET=ON,-DENABLE_WAYLAND_TARGET=OFF,wayland wayland-native"
>>>>> 58 <http://gerrit.allwinnertech.com:8081/gitweb?p=product/tina-yocto/meta-tina.git;a=blob;f=recipes-webkit/webkitgtk-2.20.2/webkitgtk_2.20.2.bb;h=bb12762c0d9f6f41a5dab294eaeca57e3675fda1;hb=refs/heads/tina-dev#l58> PACKAGECONFIG[x11] = "-DENABLE_X11_TARGET=ON,-DENABLE_X11_TARGET=OFF,virtual/libx11"
>>>>> 59 <http://gerrit.allwinnertech.com:8081/gitweb?p=product/tina-yocto/meta-tina.git;a=blob;f=recipes-webkit/webkitgtk-2.20.2/webkitgtk_2.20.2.bb;h=bb12762c0d9f6f41a5dab294eaeca57e3675fda1;hb=refs/heads/tina-dev#l59> PACKAGECONFIG[geoclue] = "-DENABLE_GEOLOCATION=ON,-DENABLE_GEOLOCATION=OFF,geoclue"
>>>>> 60 <http://gerrit.allwinnertech.com:8081/gitweb?p=product/tina-yocto/meta-tina.git;a=blob;f=recipes-webkit/webkitgtk-2.20.2/webkitgtk_2.20.2.bb;h=bb12762c0d9f6f41a5dab294eaeca57e3675fda1;hb=refs/heads/tina-dev#l60> PACKAGECONFIG[enchant] = "-DENABLE_SPELLCHECK=ON,-DENABLE_SPELLCHECK=OFF,enchant"
>>>>> 61 <http://gerrit.allwinnertech.com:8081/gitweb?p=product/tina-yocto/meta-tina.git;a=blob;f=recipes-webkit/webkitgtk-2.20.2/webkitgtk_2.20.2.bb;h=bb12762c0d9f6f41a5dab294eaeca57e3675fda1;hb=refs/heads/tina-dev#l61> PACKAGECONFIG[gtk2] = "-DENABLE_PLUGIN_PROCESS_GTK2=ON,-DENABLE_PLUGIN_PROCESS_GTK2=OFF,gtk+"
>>>>> 62 <http://gerrit.allwinnertech.com:8081/gitweb?p=product/tina-yocto/meta-tina.git;a=blob;f=recipes-webkit/webkitgtk-2.20.2/webkitgtk_2.20.2.bb;h=bb12762c0d9f6f41a5dab294eaeca57e3675fda1;hb=refs/heads/tina-dev#l62> PACKAGECONFIG[gles2] = "-DENABLE_GLES2=ON,-DENABLE_GLES2=OFF,virtual/libgles2"
>>>>> 63 <http://gerrit.allwinnertech.com:8081/gitweb?p=product/tina-yocto/meta-tina.git;a=blob;f=recipes-webkit/webkitgtk-2.20.2/webkitgtk_2.20.2.bb;h=bb12762c0d9f6f41a5dab294eaeca57e3675fda1;hb=refs/heads/tina-dev#l63> PACKAGECONFIG[webgl] = "-DENABLE_WEBGL=ON,-DENABLE_WEBGL=OFF,virtual/libgl"
>>>>> 64 <http://gerrit.allwinnertech.com:8081/gitweb?p=product/tina-yocto/meta-tina.git;a=blob;f=recipes-webkit/webkitgtk-2.20.2/webkitgtk_2.20.2.bb;h=bb12762c0d9f6f41a5dab294eaeca57e3675fda1;hb=refs/heads/tina-dev#l64> PACKAGECONFIG[opengl] = "-DENABLE_OPENGL=ON,-DENABLE_OPENGL=OFF,virtual/libgl"
>>>>> 65 <http://gerrit.allwinnertech.com:8081/gitweb?p=product/tina-yocto/meta-tina.git;a=blob;f=recipes-webkit/webkitgtk-2.20.2/webkitgtk_2.20.2.bb;h=bb12762c0d9f6f41a5dab294eaeca57e3675fda1;hb=refs/heads/tina-dev#l65> PACKAGECONFIG[libsecret] = "-DUSE_LIBSECRET=ON,-DUSE_LIBSECRET=OFF,libsecret"
>>>>> 66 <http://gerrit.allwinnertech.com:8081/gitweb?p=product/tina-yocto/meta-tina.git;a=blob;f=recipes-webkit/webkitgtk-2.20.2/webkitgtk_2.20.2.bb;h=bb12762c0d9f6f41a5dab294eaeca57e3675fda1;hb=refs/heads/tina-dev#l66> PACKAGECONFIG[libhyphen] = "-DUSE_LIBHYPHEN=ON,-DUSE_LIBHYPHEN=OFF,libhyphen"
>>>>> 67 <http://gerrit.allwinnertech.com:8081/gitweb?p=product/tina-yocto/meta-tina.git;a=blob;f=recipes-webkit/webkitgtk-2.20.2/webkitgtk_2.20.2.bb;h=bb12762c0d9f6f41a5dab294eaeca57e3675fda1;hb=refs/heads/tina-dev#l67> PACKAGECONFIG[webcrypto] = "-DENABLE_WEB_CRYPTO=ON,-DENABLE_WEB_CRYPTO=OFF,libgcrypt libtasn1"
>>>>> 68 <http://gerrit.allwinnertech.com:8081/gitweb?p=product/tina-yocto/meta-tina.git;a=blob;f=recipes-webkit/webkitgtk-2.20.2/webkitgtk_2.20.2.bb;h=bb12762c0d9f6f41a5dab294eaeca57e3675fda1;hb=refs/heads/tina-dev#l68> PACKAGECONFIG[gst_gl] = "-DUSE_GSTREAMER_GL=ON,-DUSE_GSTREAMER_GL=OFF,gstreamer1.0-plugins-bad"
>>>>> 69 <http://gerrit.allwinnertech.com:8081/gitweb?p=product/tina-yocto/meta-tina.git;a=blob;f=recipes-webkit/webkitgtk-2.20.2/webkitgtk_2.20.2.bb;h=bb12762c0d9f6f41a5dab294eaeca57e3675fda1;hb=refs/heads/tina-dev#l69> # Source is at https://github.com/google/woff2 <https://github.com/google/woff2>
>>>>> 70 <http://gerrit.allwinnertech.com:8081/gitweb?p=product/tina-yocto/meta-tina.git;a=blob;f=recipes-webkit/webkitgtk-2.20.2/webkitgtk_2.20.2.bb;h=bb12762c0d9f6f41a5dab294eaeca57e3675fda1;hb=refs/heads/tina-dev#l70> PACKAGECONFIG[woff2] = "-DUSE_WOFF2=ON,-DUSE_WOFF2=OFF,woff2"
>>>>> 71 <http://gerrit.allwinnertech.com:8081/gitweb?p=product/tina-yocto/meta-tina.git;a=blob;f=recipes-webkit/webkitgtk-2.20.2/webkitgtk_2.20.2.bb;h=bb12762c0d9f6f41a5dab294eaeca57e3675fda1;hb=refs/heads/tina-dev#l71>
>>>>> 
>>>> 
>>>> You need to make sure gst-play-1.0 —videosink=glimagesink works on your platform before starting to debug webkit.
>>>> After you have validated that works, make sure you enabled gst_gl in that packageconfig thing. Which GStreamer version do you use?
>>>> 
>>>> 
>>>>> 
>>>>> 
>>>>> At 2018-06-04 16:43:26, "Philippe Normand" <philn at igalia.com <mailto:philn at igalia.com>> wrote:
>>>>> Hi!
>>>>> 
>>>>> Which linux distribution do you use? If you are using the latest Ubuntu (17.04 is the version I think) or Debian then you need to install gstreamer1.0-gl. See also https://bugs.webkit.org/show_bug.cgi?id=184925 <https://bugs.webkit.org/show_bug.cgi?id=184925>
>>>>> 
>>>>> Philippe
>>>>> 
>>>>> 
>>>>> 
>>>>>> On 1 Jun 2018, at 08:43, tugouxp <13824125580 at 163.com <mailto:13824125580 at 163.com>> wrote:
>>>>>> 
>>>>>> hi folks:
>>>>>>     i make a test about video player with video tag based on midori and webkit2.22.2, but seems only when i disable "GSTREAMER_GL", the display window can be displayed normally.
>>>>>> if the GSTREAMER_GL was enabled, the decoder process working fine but the browser cant show the player window, just a blank window.
>>>>>> so,from the code, it seems the difference between the two test is the display sinker of gstreamer pipe was different.
>>>>>> 1.if GSTRREAMER_GL enabled, it would be use the display sinker "createVideoSinkGL" returned
>>>>>> 2.if GSTRREAMER_GL disabled, the default display sinker would be webkit video sink.
>>>>>> 
>>>>>> seems only method 2 can use, but i found another problem when using the way 2(webkit videw sinker), that is  when playing high quality streamer with browser, the cpu occupancy rate was very high (about 50 percent) of process 'webkitwebprocess'. 
>>>>>> 
>>>>>> so i dont know how to choice, which is the better way to deal with this problem, much appreciate your help!
>>>>>> 
>>>>>> codes:
>>>>>> 
>>>>>> 1108 GstElement* MediaPlayerPrivateGStreamerBase::createVideoSink()                                                                                                        
>>>>>> 1109 {                                                                                                                                                                    
>>>>>> 1110     acceleratedRenderingStateChanged();                                                                                                                                                                       
>>>>>> 1111                                                                                                                                                                      
>>>>>> 1112 #if USE(GSTREAMER_GL)                                                                                                                                                
>>>>>> 1113     if (m_renderingCanBeAccelerated)                                                                                                                                  
>>>>>> 1114     ¦   m_videoSink = createVideoSinkGL();                                                                                                                            
>>>>>> 1115 #endif                                                                                                                                                                
>>>>>> 1116                                                                                                                                                                      
>>>>>> 1117     if (!m_videoSink) {                                                                                                                                              
>>>>>> 1118     ¦   m_usingFallbackVideoSink = true;                                                                                                                              
>>>>>> 1119     ¦   m_videoSink = webkitVideoSinkNew();                                                                                                                          
>>>>>> 1120     ¦   g_signal_connect_swapped(m_videoSink.get(), "repaint-requested", G_CALLBACK(repaintCallback), this);                                                          
>>>>>> 1121     ¦   g_signal_connect_swapped(m_videoSink.get(), "repaint-cancelled", G_CALLBACK(repaintCancelledCallback), this);                                                
>>>>>> 1122     }                                                                                                                                                                
>>>>>> 1123                                                                                                                                                                      
>>>>>> 1124     GstElement* videoSink = nullptr;                                                                                                                                  
>>>>>> 1125     m_fpsSink = gst_element_factory_make("fpsdisplaysink", "sink");                                                                                                  
>>>>>> 1126     if (m_fpsSink) {                                                                                                                                                  
>>>>>> 1127     ¦   g_object_set(m_fpsSink.get(), "silent", TRUE , nullptr);                                                                                                      
>>>>>> 1128                                                                                                                                                                      
>>>>>> 1129     ¦   // Turn off text overlay unless logging is enabled.                                                                                                          
>>>>>> 1130 #if LOG_DISABLED                                                                                                                                                      
>>>>>> 1131     ¦   g_object_set(m_fpsSink.get(), "text-overlay", FALSE , nullptr);                                                                                              
>>>>>> 1132 #else                                                                                                                                                                
>>>>>> 1133     ¦   if (!isLogChannelEnabled("Media"))                                                                                                                            
>>>>>> 1134     ¦   ¦   g_object_set(m_fpsSink.get(), "text-overlay", FALSE , nullptr);                                                                                          
>>>>>> 1135 #endif // LOG_DISABLED                                                                                                                                                
>>>>>> 1136                                                                                                                                                                      
>>>>>> 1137     ¦   if (g_object_class_find_property(G_OBJECT_GET_CLASS(m_fpsSink.get()), "video-sink")) {                                                                        
>>>>>> 1138     ¦   ¦   g_object_set(m_fpsSink.get(), "video-sink", m_videoSink.get(), nullptr);                                                                                  
>>>>>> 1139     ¦   ¦   videoSink = m_fpsSink.get();                                                                                                                              
>>>>>> 1140     ¦   } else                                                                                                                                                        
>>>>>> 1141     ¦   ¦   m_fpsSink = nullptr;                                                                                                                                      
>>>>>> 1142     }                                                                                                                                                                
>>>>>> 1143                                                                                                                                                                      
>>>>>> 1144     if (!m_fpsSink)                                                                                                                                                  
>>>>>> 1145     ¦   videoSink = m_videoSink.get();                                                                                                                                
>>>>>> 1146                                                                                                                                                                      
>>>>>> 1147     ASSERT(videoSink);                                                                                                                                                
>>>>>> 1148                                                                                                                                                                      
>>>>>> 1149     return videoSink;
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>  
>>>>>> 
>>>>>> _______________________________________________
>>>>>> webkit-gtk mailing list
>>>>>> webkit-gtk at lists.webkit.org <mailto:webkit-gtk at lists.webkit.org>
>>>>>> https://lists.webkit.org/mailman/listinfo/webkit-gtk <https://lists.webkit.org/mailman/listinfo/webkit-gtk>
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>>  
>>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>>  
>>>> 
>>> 
>>> 
>>> 
>>> 
>>>  
>>> 
>> 
> 
> 
> 
> 
>  
> 
> <gst.log>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-gtk/attachments/20180605/95793e19/attachment-0001.html>


More information about the webkit-gtk mailing list