Title: [281491] trunk
Revision
281491
Author
[email protected]
Date
2021-08-24 03:07:43 -0700 (Tue, 24 Aug 2021)

Log Message

REGRESSION(r281305) [GStreamer] fast/mediastream/getDisplayMedia-frame-rate.html timeouts
https://bugs.webkit.org/show_bug.cgi?id=229343

Patch by Philippe Normand <[email protected]> on 2021-08-24
Reviewed by Youenn Fablet.

Source/WebCore:

Proxy the video samples from the wrapped mock source to its parent. The test was timing out
because the video samples were never notified to the top level observer in Internals.

* platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.cpp:
(WebCore::MockDisplayCaptureSourceGStreamer::MockDisplayCaptureSourceGStreamer):
(WebCore::MockDisplayCaptureSourceGStreamer::requestToEnd):
(WebCore::MockDisplayCaptureSourceGStreamer::videoSampleAvailable):
* platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.h:

LayoutTests:

* platform/glib/TestExpectations: Test is now passing, in Release at least. Timing out in
Debug but that will be investigated next, there are other mediastream timeouts in Debug.

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (281490 => 281491)


--- trunk/LayoutTests/ChangeLog	2021-08-24 08:17:54 UTC (rev 281490)
+++ trunk/LayoutTests/ChangeLog	2021-08-24 10:07:43 UTC (rev 281491)
@@ -1,3 +1,13 @@
+2021-08-24  Philippe Normand  <[email protected]>
+
+        REGRESSION(r281305) [GStreamer] fast/mediastream/getDisplayMedia-frame-rate.html timeouts
+        https://bugs.webkit.org/show_bug.cgi?id=229343
+
+        Reviewed by Youenn Fablet.
+
+        * platform/glib/TestExpectations: Test is now passing, in Release at least. Timing out in
+        Debug but that will be investigated next, there are other mediastream timeouts in Debug.
+
 2021-08-24  Tim Nguyen  <[email protected]>
 
         Implement inert attribute behind feature flag

Modified: trunk/LayoutTests/platform/glib/TestExpectations (281490 => 281491)


--- trunk/LayoutTests/platform/glib/TestExpectations	2021-08-24 08:17:54 UTC (rev 281490)
+++ trunk/LayoutTests/platform/glib/TestExpectations	2021-08-24 10:07:43 UTC (rev 281491)
@@ -2418,8 +2418,6 @@
 
 webkit.org/b/207062 imported/w3c/web-platform-tests/media-source/mediasource-replay.html [ Failure Pass ]
 
-webkit.org/b/229343 fast/mediastream/getDisplayMedia-frame-rate.html [ Timeout ]
-
 webkit.org/b/229346 webrtc/multi-audio.html [ Timeout Pass ]
 
 webkit.org/b/229347 imported/w3c/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-cluster-002.html [ ImageOnlyFailure ]

Modified: trunk/Source/WebCore/ChangeLog (281490 => 281491)


--- trunk/Source/WebCore/ChangeLog	2021-08-24 08:17:54 UTC (rev 281490)
+++ trunk/Source/WebCore/ChangeLog	2021-08-24 10:07:43 UTC (rev 281491)
@@ -1,3 +1,19 @@
+2021-08-24  Philippe Normand  <[email protected]>
+
+        REGRESSION(r281305) [GStreamer] fast/mediastream/getDisplayMedia-frame-rate.html timeouts
+        https://bugs.webkit.org/show_bug.cgi?id=229343
+
+        Reviewed by Youenn Fablet.
+
+        Proxy the video samples from the wrapped mock source to its parent. The test was timing out
+        because the video samples were never notified to the top level observer in Internals.
+
+        * platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.cpp:
+        (WebCore::MockDisplayCaptureSourceGStreamer::MockDisplayCaptureSourceGStreamer):
+        (WebCore::MockDisplayCaptureSourceGStreamer::requestToEnd):
+        (WebCore::MockDisplayCaptureSourceGStreamer::videoSampleAvailable):
+        * platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.h:
+
 2021-08-24  Tim Nguyen  <[email protected]>
 
         Implement inert attribute behind feature flag

Modified: trunk/Source/WebCore/platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.cpp (281490 => 281491)


--- trunk/Source/WebCore/platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.cpp	2021-08-24 08:17:54 UTC (rev 281490)
+++ trunk/Source/WebCore/platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.cpp	2021-08-24 10:07:43 UTC (rev 281491)
@@ -63,6 +63,36 @@
     return CaptureSourceOrError(WTFMove(source));
 }
 
+MockDisplayCaptureSourceGStreamer::MockDisplayCaptureSourceGStreamer(Ref<MockRealtimeVideoSourceGStreamer>&& source, CaptureDevice::DeviceType type)
+    : RealtimeMediaSource(Type::Video, source->name().isolatedCopy())
+    , m_source(WTFMove(source))
+    , m_type(type)
+{
+    m_source->addVideoSampleObserver(*this);
+}
+
+MockDisplayCaptureSourceGStreamer::~MockDisplayCaptureSourceGStreamer()
+{
+    m_source->removeVideoSampleObserver(*this);
+}
+
+void MockDisplayCaptureSourceGStreamer::stopProducingData()
+{
+    m_source->removeVideoSampleObserver(*this);
+    m_source->stop();
+}
+
+void MockDisplayCaptureSourceGStreamer::requestToEnd(Observer& callingObserver)
+{
+    m_source->removeVideoSampleObserver(*this);
+    m_source->requestToEnd(callingObserver);
+}
+
+void MockDisplayCaptureSourceGStreamer::videoSampleAvailable(MediaSample& sample)
+{
+    RealtimeMediaSource::videoSampleAvailable(sample);
+}
+
 const RealtimeMediaSourceCapabilities& MockDisplayCaptureSourceGStreamer::capabilities()
 {
     if (!m_capabilities) {

Modified: trunk/Source/WebCore/platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.h (281490 => 281491)


--- trunk/Source/WebCore/platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.h	2021-08-24 08:17:54 UTC (rev 281490)
+++ trunk/Source/WebCore/platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.h	2021-08-24 10:07:43 UTC (rev 281491)
@@ -40,20 +40,22 @@
     bool canResizeVideoFrames() const final { return true; }
 };
 
-class MockDisplayCaptureSourceGStreamer final : public RealtimeMediaSource {
+class MockDisplayCaptureSourceGStreamer final : public RealtimeMediaSource, RealtimeMediaSource::VideoSampleObserver {
 public:
     static CaptureSourceOrError create(const CaptureDevice&, const MediaConstraints*);
 
+    void requestToEnd(Observer&) final;
+
+protected:
+    // RealtimeMediaSource::VideoSampleObserver
+    void videoSampleAvailable(MediaSample&) final;
+
 private:
-    MockDisplayCaptureSourceGStreamer(Ref<MockRealtimeVideoSourceGStreamer>&& source, CaptureDevice::DeviceType type)
-        : RealtimeMediaSource(Type::Video, source->name().isolatedCopy())
-        , m_source(WTFMove(source))
-        , m_type(type) { }
+    MockDisplayCaptureSourceGStreamer(Ref<MockRealtimeVideoSourceGStreamer>&&, CaptureDevice::DeviceType);
+    ~MockDisplayCaptureSourceGStreamer();
 
-    friend class MockRealtimeVideoSourceGStreamer;
-
     void startProducingData() final { m_source->start(); }
-    void stopProducingData() final { m_source->stop(); }
+    void stopProducingData() final;
     void settingsDidChange(OptionSet<RealtimeMediaSourceSettings::Flag>) final { m_currentSettings = { }; }
     bool isCaptureSource() const final { return true; }
     const RealtimeMediaSourceCapabilities& capabilities() final;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to