RESOLVED FIXED 183362
[GTK] [gstreamer] video won't unpause when built with -DUSE_GSTREAMER_GL=OFF
https://bugs.webkit.org/show_bug.cgi?id=183362
Summary [GTK] [gstreamer] video won't unpause when built with -DUSE_GSTREAMER_GL=OFF
Jeremy Bicha
Reported 2018-03-06 03:53:15 PST
webkit2gtk 2.19.91 or webkit2gtk 2.18.6 Ubuntu has to use -DUSE_GSTREAMER_GL=OFF at least for Ubuntu 16.04 LTS since Ubuntu can't install the "bad" gstreamer plugin set by default. (By the way, Ubuntu 18.04 LTS needs graphene to be promoted to Ubuntu "main" but there is a backlog for those kind of requests.) When webkit2gtk is built with this option, videos do not unpause correctly. Test Case ========= From Ubuntu, Open the Help app (yelp) Click Getting Started Play one of the videos. Press Pause Press Play. The video stays stuck on the paused frame, while the sound keeps playing. Also the timer 0:07/0:34 advances like normal. Seek works (clicking a different point in the video progress bar, but the video still remains stuck on the paused frame. This is also reproducible with Epiphany on YouTube. Other Info ========== This was split off from https://bugs.webkit.org/show_bug.cgi?id=183085 which I guess is more about the seek feature not working at all, especially for webm videos.
Attachments
webkit-no-gsteamer-gl-pause-log.txt (752.22 KB, text/plain)
2018-04-06 09:47 PDT, Jeremy Bicha
no flags
Patch (6.40 KB, patch)
2018-04-11 01:56 PDT, Hyunjun Ko
no flags
Patch (6.40 KB, patch)
2018-04-13 01:11 PDT, Hyunjun Ko
no flags
Patch (5.60 KB, patch)
2018-04-13 01:56 PDT, Miguel Gomez
no flags
Philippe Normand
Comment 1 2018-03-07 07:54:55 PST
Please attach GST_DEBUG="3,gl*:6,webkit*:6" logs.
Jeremy Bicha
Comment 2 2018-04-06 09:47:05 PDT
Created attachment 337372 [details] webkit-no-gsteamer-gl-pause-log.txt Sorry for the late reply. Log attached. This issue will be worked around soon (later today probably) in Ubuntu 18.04 LTS (Beta) by switching to gstreamergl. Unfortunately, it's not possible for Ubuntu 16.04 LTS to use gstreamergl so it would be great to have this issue fixed there. Thanks!
Hyunjun Ko
Comment 3 2018-04-10 22:54:48 PDT
This isuue is introduced by the commit daa4c4991966 (https://bugs.webkit.org/show_bug.cgi?id=180978) Once m_drawCancelled turned into TRUE, there's no way to get back to FALSE. In this issue, when PAUSEing, sink calls unlock which makes m_drawCancelled TRUE and never get back.
Hyunjun Ko
Comment 4 2018-04-11 01:56:51 PDT
Xabier Rodríguez Calvar
Comment 5 2018-04-11 04:02:27 PDT
Miguel, can you have a look at the graphics part?
Miguel Gomez
Comment 6 2018-04-12 07:47:58 PDT
(In reply to Hyunjun Ko from comment #4) > Created attachment 337686 [details] > Patch Hyunjun, your patch is ok and works, but I'd like to upload a new one to improve some things on MediaPlayerPrivateGStreamerBase. I think there was an error to modify the drawCancelled flag inside cancelRepaint() and I'd like to remove it from there. cancelRepaint() mission is to avoid a deadlock when pausing video at the same time that the gstreamer thread is waiting for the main thread to paint: the main thread will lock trying to change the state of the pipeline while gstreamer is locked waiting for the main thread to paint (see https://bugs.webkit.org/show_bug.cgi?id=170003). So we shouldn't do anything extra inside that function. BTW this can only happen in the non AC case, so no need to handle other cases there. When AC is enabled, with gst-gl there's no condition to wait, and without gst-gl the condition is notified from the compositor thread, not the main thread, so there's no deadlock. Eventually cancelRepaint() is used in the destructor as well to release the gstreamer thread from m_drawCondition, but setting the drawCancelled flag there is a mistake IMO.
Hyunjun Ko
Comment 7 2018-04-13 01:11:04 PDT
Miguel Gomez
Comment 8 2018-04-13 01:56:09 PDT
WebKit Commit Bot
Comment 9 2018-04-13 03:09:28 PDT
Comment on attachment 337875 [details] Patch Clearing flags on attachment: 337875 Committed r230627: <https://trac.webkit.org/changeset/230627>
WebKit Commit Bot
Comment 10 2018-04-13 03:09:29 PDT
All reviewed patches have been landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.