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