Title: [273309] trunk
Revision
273309
Author
[email protected]
Date
2021-02-23 08:58:16 -0800 (Tue, 23 Feb 2021)

Log Message

[GStreamer] fast/mediastream/captureStream/canvas2d.html is flaky timing out since GStreamer 1.18 update
https://bugs.webkit.org/show_bug.cgi?id=218580

Patch by Philippe Normand <[email protected]> on 2021-02-23
Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

Live streams start without pre-rolling, that means they can reach PAUSED while sinks still
haven't received a sample to render. So we need to notify the media element in such cases
only after pre-rolling has completed. Otherwise the media element might emit a play event
too early, before pre-rolling has been completed.

No new tests, this patch fixes a few layout tests though, most notably removing flakiness
from fast/mediastream/captureStream/canvas2d.html.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::updateStates):
(WebCore::MediaPlayerPrivateGStreamer::triggerRepaint):

LayoutTests:

* platform/glib/TestExpectations: Unflag no-longer-flaky and now-passing media tests.

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (273308 => 273309)


--- trunk/LayoutTests/ChangeLog	2021-02-23 16:21:48 UTC (rev 273308)
+++ trunk/LayoutTests/ChangeLog	2021-02-23 16:58:16 UTC (rev 273309)
@@ -1,3 +1,12 @@
+2021-02-23  Philippe Normand  <[email protected]>
+
+        [GStreamer] fast/mediastream/captureStream/canvas2d.html is flaky timing out since GStreamer 1.18 update
+        https://bugs.webkit.org/show_bug.cgi?id=218580
+
+        Reviewed by Xabier Rodriguez-Calvar.
+
+        * platform/glib/TestExpectations: Unflag no-longer-flaky and now-passing media tests.
+
 2021-02-23  Frederic Wang  <[email protected]>
 
         Nullptr crash in ModifySelectionListLevelCommand::appendSiblingNodeRange

Modified: trunk/LayoutTests/platform/glib/TestExpectations (273308 => 273309)


--- trunk/LayoutTests/platform/glib/TestExpectations	2021-02-23 16:21:48 UTC (rev 273308)
+++ trunk/LayoutTests/platform/glib/TestExpectations	2021-02-23 16:58:16 UTC (rev 273309)
@@ -512,8 +512,6 @@
 
 webkit.org/b/214038 imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cues-cuechange.html [ Missing Failure ]
 
-webkit.org/b/217829 media/video-orientation-canvas.html [ Failure ]
-
 webkit.org/b/217845 imported/w3c/web-platform-tests/webaudio/the-audio-api/the-stereopanner-interface/no-dezippering.html [ Failure ]
 webkit.org/b/218321 imported/w3c/web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/active-processing.https.html [ Pass Timeout Failure ]
 # Needs to process results in order.
@@ -520,8 +518,6 @@
 webkit.org/b/218652 imported/w3c/web-platform-tests/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html [ Failure Pass ]
 webkit.org/b/218653 imported/w3c/web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/panner-distance-clamping.html [ Failure Pass ]
 
-webkit.org/b/218580 fast/mediastream/captureStream/canvas2d.html [ Failure Timeout ]
-
 webkit.org/b/220540 media/media-fullscreen-inline.html [ Timeout ]
 
 #////////////////////////////////////////////////////////////////////////////////////////
@@ -1577,8 +1573,7 @@
 # Fails because MutationObservers are not notified at end-of-task.
 webkit.org/b/78290 fast/dom/MutationObserver/end-of-task-delivery.html [ Failure ]
 
-# The MediaStream implementation is still not completed,
-webkit.org/b/79203 fast/mediastream/MediaStream-video-element-displays-buffer.html [ Failure ]
+# The MediaStream implementation is almost completed
 webkit.org/b/79203 fast/mediastream/MediaStream-video-element-video-tracks-disabled-then-enabled.html [ Timeout Failure ]
 
 webkit.org/b/84692 fast/events/attempt-scroll-with-no-scrollbars.html [ Failure ]

Modified: trunk/Source/WebCore/ChangeLog (273308 => 273309)


--- trunk/Source/WebCore/ChangeLog	2021-02-23 16:21:48 UTC (rev 273308)
+++ trunk/Source/WebCore/ChangeLog	2021-02-23 16:58:16 UTC (rev 273309)
@@ -1,3 +1,22 @@
+2021-02-23  Philippe Normand  <[email protected]>
+
+        [GStreamer] fast/mediastream/captureStream/canvas2d.html is flaky timing out since GStreamer 1.18 update
+        https://bugs.webkit.org/show_bug.cgi?id=218580
+
+        Reviewed by Xabier Rodriguez-Calvar.
+
+        Live streams start without pre-rolling, that means they can reach PAUSED while sinks still
+        haven't received a sample to render. So we need to notify the media element in such cases
+        only after pre-rolling has completed. Otherwise the media element might emit a play event
+        too early, before pre-rolling has been completed.
+
+        No new tests, this patch fixes a few layout tests though, most notably removing flakiness
+        from fast/mediastream/captureStream/canvas2d.html.
+
+        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
+        (WebCore::MediaPlayerPrivateGStreamer::updateStates):
+        (WebCore::MediaPlayerPrivateGStreamer::triggerRepaint):
+
 2021-02-23  Diego Pino Garcia  <[email protected]>
 
         Unreviewed, GTK Ubuntu LTS build fix after r273241

Modified: trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp (273308 => 273309)


--- trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp	2021-02-23 16:21:48 UTC (rev 273308)
+++ trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp	2021-02-23 16:58:16 UTC (rev 273309)
@@ -2405,10 +2405,9 @@
 
         if (m_currentState == GST_STATE_READY)
             m_readyState = MediaPlayer::ReadyState::HaveNothing;
-        else if (m_currentState == GST_STATE_PAUSED) {
-            m_readyState = MediaPlayer::ReadyState::HaveEnoughData;
+        else if (m_currentState == GST_STATE_PAUSED)
             m_isPaused = true;
-        } else if (m_currentState == GST_STATE_PLAYING)
+        else if (m_currentState == GST_STATE_PLAYING)
             m_isPaused = false;
 
         if (!m_isPaused && m_playbackRate)
@@ -3081,6 +3080,15 @@
             if (!weakThis)
                 return;
             updateVideoSizeAndOrientationFromCaps(caps.get());
+
+            // Live streams start without pre-rolling, that means they can reach PAUSED while sinks
+            // still haven't received a sample to render. So we need to notify the media element in
+            // such cases only after pre-rolling has completed. Otherwise the media element might
+            // emit a play event too early, before pre-rolling has been completed.
+            if (m_isLiveStream && m_readyState < MediaPlayer::ReadyState::HaveEnoughData) {
+                m_readyState = MediaPlayer::ReadyState::HaveEnoughData;
+                m_player->readyStateChanged();
+            }
         });
     }
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to