Title: [236646] trunk
Revision
236646
Author
[email protected]
Date
2018-09-30 07:32:15 -0700 (Sun, 30 Sep 2018)

Log Message

[MediaStream] Clean up RealtimeMediaSource settings change handling
https://bugs.webkit.org/show_bug.cgi?id=189998
<rdar://problem/44797884>

Reviewed by Youenn Fablet.

Source/WebCore:

No new tests, updated webrtc/video-disabled-black.html.

* Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp:
(WebCore::CanvasCaptureMediaStreamTrack::Source::Source):
(WebCore::CanvasCaptureMediaStreamTrack::Source::settings):
(WebCore::CanvasCaptureMediaStreamTrack::Source::settingsDidChange):
(WebCore::CanvasCaptureMediaStreamTrack::Source::canvasResized):
* Modules/mediastream/CanvasCaptureMediaStreamTrack.h:
* platform/mediastream/RealtimeIncomingVideoSource.cpp:
(WebCore::RealtimeIncomingVideoSource::RealtimeIncomingVideoSource):
(WebCore::RealtimeIncomingVideoSource::settings):
(WebCore::RealtimeIncomingVideoSource::settingsDidChange):
* platform/mediastream/RealtimeIncomingVideoSource.h:
* platform/mediastream/RealtimeMediaSource.cpp:
(WebCore::RealtimeMediaSource::settingsDidChange):
(WebCore::RealtimeMediaSource::notifySettingsDidChangeObservers):
(WebCore::RealtimeMediaSource::setSize):
(WebCore::RealtimeMediaSource::setFrameRate):
(WebCore::RealtimeMediaSource::setAspectRatio):
(WebCore::RealtimeMediaSource::setFacingMode):
(WebCore::RealtimeMediaSource::setVolume):
(WebCore::RealtimeMediaSource::setSampleRate):
(WebCore::RealtimeMediaSource::setSampleSize):
(WebCore::RealtimeMediaSource::setEchoCancellation):
* platform/mediastream/RealtimeMediaSource.h:
* platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp:
(WebCore::GStreamerAudioCaptureSource::settingsDidChange):
* platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:
(WebCore::GStreamerVideoCaptureSource::settingsDidChange):
* platform/mediastream/mac/AVVideoCaptureSource.mm:
(WebCore::AVVideoCaptureSource::settingsDidChange):
* platform/mediastream/mac/CoreAudioCaptureSource.cpp:
(WebCore::CoreAudioCaptureSource::settingsDidChange):
* platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp:
(WebCore::DisplayCaptureSourceCocoa::settingsDidChange):
* platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm:
(WebCore::RealtimeIncomingVideoSourceCocoa::processNewSample):
* platform/mock/MockRealtimeAudioSource.cpp:
(WebCore::MockRealtimeAudioSource::settingsDidChange):
* platform/mock/MockRealtimeVideoSource.cpp:
(WebCore::MockRealtimeVideoSource::settingsDidChange):

Source/WebKit:

* WebProcess/cocoa/UserMediaCaptureManager.cpp:
(WebKit::UserMediaCaptureManager::Source::setSettings):

LayoutTests:

* webrtc/video-disabled-black.html:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (236645 => 236646)


--- trunk/LayoutTests/ChangeLog	2018-09-30 07:02:39 UTC (rev 236645)
+++ trunk/LayoutTests/ChangeLog	2018-09-30 14:32:15 UTC (rev 236646)
@@ -1,3 +1,13 @@
+2018-09-30  Eric Carlson  <[email protected]>
+
+        [MediaStream] Clean up RealtimeMediaSource settings change handling
+        https://bugs.webkit.org/show_bug.cgi?id=189998
+        <rdar://problem/44797884>
+
+        Reviewed by Youenn Fablet.
+
+        * webrtc/video-disabled-black.html:
+
 2018-09-29  Commit Queue  <[email protected]>
 
         Unreviewed, rolling out r236631.

Modified: trunk/LayoutTests/webrtc/video-disabled-black.html (236645 => 236646)


--- trunk/LayoutTests/webrtc/video-disabled-black.html	2018-09-30 07:02:39 UTC (rev 236645)
+++ trunk/LayoutTests/webrtc/video-disabled-black.html	2018-09-30 14:32:15 UTC (rev 236646)
@@ -7,7 +7,7 @@
         <script src=""
     </head>
     <body>
-        <video id="video" autoplay=""></video>
+        <video id="video" autoplay playsinline></video>
         <canvas id="canvas" width="640" height="480"></canvas>
         <script src =""
         <script>
@@ -21,6 +21,9 @@
 function testImage()
 {
     try {
+        if (!video.videoWidth || !video.videoHeight)
+            throw `Video size invalid: ${video.videoWidth}x${video.videoHeight}`;
+
         canvas.width = video.videoWidth;
         canvas.height = video.videoHeight;
         canvas.getContext('2d').drawImage(video, 0, 0, canvas.width, canvas.height);
@@ -44,7 +47,7 @@
         setTimeout(() => {
             testImage();
         }, 0);
-    }, 500);
+    }, 2000);
 }
 
 var finishTest, errorTest;

Modified: trunk/Source/WebCore/ChangeLog (236645 => 236646)


--- trunk/Source/WebCore/ChangeLog	2018-09-30 07:02:39 UTC (rev 236645)
+++ trunk/Source/WebCore/ChangeLog	2018-09-30 14:32:15 UTC (rev 236646)
@@ -1,5 +1,55 @@
 2018-09-30  Eric Carlson  <[email protected]>
 
+        [MediaStream] Clean up RealtimeMediaSource settings change handling
+        https://bugs.webkit.org/show_bug.cgi?id=189998
+        <rdar://problem/44797884>
+
+        Reviewed by Youenn Fablet.
+
+        No new tests, updated webrtc/video-disabled-black.html.
+
+        * Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp:
+        (WebCore::CanvasCaptureMediaStreamTrack::Source::Source):
+        (WebCore::CanvasCaptureMediaStreamTrack::Source::settings):
+        (WebCore::CanvasCaptureMediaStreamTrack::Source::settingsDidChange):
+        (WebCore::CanvasCaptureMediaStreamTrack::Source::canvasResized):
+        * Modules/mediastream/CanvasCaptureMediaStreamTrack.h:
+        * platform/mediastream/RealtimeIncomingVideoSource.cpp:
+        (WebCore::RealtimeIncomingVideoSource::RealtimeIncomingVideoSource):
+        (WebCore::RealtimeIncomingVideoSource::settings):
+        (WebCore::RealtimeIncomingVideoSource::settingsDidChange):
+        * platform/mediastream/RealtimeIncomingVideoSource.h:
+        * platform/mediastream/RealtimeMediaSource.cpp:
+        (WebCore::RealtimeMediaSource::settingsDidChange):
+        (WebCore::RealtimeMediaSource::notifySettingsDidChangeObservers):
+        (WebCore::RealtimeMediaSource::setSize):
+        (WebCore::RealtimeMediaSource::setFrameRate):
+        (WebCore::RealtimeMediaSource::setAspectRatio):
+        (WebCore::RealtimeMediaSource::setFacingMode):
+        (WebCore::RealtimeMediaSource::setVolume):
+        (WebCore::RealtimeMediaSource::setSampleRate):
+        (WebCore::RealtimeMediaSource::setSampleSize):
+        (WebCore::RealtimeMediaSource::setEchoCancellation):
+        * platform/mediastream/RealtimeMediaSource.h:
+        * platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp:
+        (WebCore::GStreamerAudioCaptureSource::settingsDidChange):
+        * platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:
+        (WebCore::GStreamerVideoCaptureSource::settingsDidChange):
+        * platform/mediastream/mac/AVVideoCaptureSource.mm:
+        (WebCore::AVVideoCaptureSource::settingsDidChange):
+        * platform/mediastream/mac/CoreAudioCaptureSource.cpp:
+        (WebCore::CoreAudioCaptureSource::settingsDidChange):
+        * platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp:
+        (WebCore::DisplayCaptureSourceCocoa::settingsDidChange):
+        * platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm:
+        (WebCore::RealtimeIncomingVideoSourceCocoa::processNewSample):
+        * platform/mock/MockRealtimeAudioSource.cpp:
+        (WebCore::MockRealtimeAudioSource::settingsDidChange):
+        * platform/mock/MockRealtimeVideoSource.cpp:
+        (WebCore::MockRealtimeVideoSource::settingsDidChange):
+
+2018-09-30  Eric Carlson  <[email protected]>
+
         [MediaStream] Use display-specific capture factories
         https://bugs.webkit.org/show_bug.cgi?id=190043
         <rdar://problem/44834412>

Modified: trunk/Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp (236645 => 236646)


--- trunk/Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp	2018-09-30 07:02:39 UTC (rev 236645)
+++ trunk/Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp	2018-09-30 14:32:15 UTC (rev 236646)
@@ -72,12 +72,6 @@
     , m_canvasChangedTimer(*this, &Source::captureCanvas)
     , m_canvas(&canvas)
 {
-    m_settings.setWidth(canvas.width());
-    m_settings.setHeight(canvas.height());
-    RealtimeMediaSourceSupportedConstraints constraints;
-    constraints.setSupportsWidth(true);
-    constraints.setSupportsHeight(true);
-    m_settings.setSupportedConstraints(constraints);
 }
 
 void CanvasCaptureMediaStreamTrack::Source::startProducingData()
@@ -115,22 +109,36 @@
     m_canvas = nullptr;
 }
 
-void CanvasCaptureMediaStreamTrack::Source::canvasResized(CanvasBase& canvas)
+const RealtimeMediaSourceSettings& CanvasCaptureMediaStreamTrack::Source::settings()
 {
-    ASSERT_UNUSED(canvas, m_canvas == &canvas);
+    if (m_currentSettings)
+        return m_currentSettings.value();
 
-    OptionSet<RealtimeMediaSourceSettings::Flag> changed;
-    if (m_canvas->width() != m_settings.width())
-        changed.add(RealtimeMediaSourceSettings::Flag::Width);
-    if (m_canvas->height() != m_settings.height())
-        changed.add(RealtimeMediaSourceSettings::Flag::Height);
+    RealtimeMediaSourceSupportedConstraints constraints;
+    constraints.setSupportsWidth(true);
+    constraints.setSupportsHeight(true);
 
-    m_settings.setWidth(m_canvas->width());
-    m_settings.setHeight(m_canvas->height());
+    RealtimeMediaSourceSettings settings;
+    settings.setWidth(m_canvas->width());
+    settings.setHeight(m_canvas->height());
+    settings.setSupportedConstraints(constraints);
 
-    settingsDidChange(changed);
+    m_currentSettings = WTFMove(settings);
+    return m_currentSettings.value();
 }
 
+void CanvasCaptureMediaStreamTrack::Source::settingsDidChange(OptionSet<RealtimeMediaSourceSettings::Flag> settings)
+{
+    if (settings.containsAny({ RealtimeMediaSourceSettings::Flag::Width, RealtimeMediaSourceSettings::Flag::Height }))
+        m_currentSettings = std::nullopt;
+}
+
+void CanvasCaptureMediaStreamTrack::Source::canvasResized(CanvasBase& canvas)
+{
+    ASSERT_UNUSED(canvas, m_canvas == &canvas);
+    setSize(IntSize(m_canvas->width(), m_canvas->height()));
+}
+
 void CanvasCaptureMediaStreamTrack::Source::canvasChanged(CanvasBase& canvas, const FloatRect&)
 {
     ASSERT_UNUSED(canvas, m_canvas == &canvas);

Modified: trunk/Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.h (236645 => 236646)


--- trunk/Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.h	2018-09-30 07:02:39 UTC (rev 236645)
+++ trunk/Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.h	2018-09-30 14:32:15 UTC (rev 236646)
@@ -66,7 +66,8 @@
         void startProducingData() final;
         void stopProducingData()  final;
         const RealtimeMediaSourceCapabilities& capabilities() final { return RealtimeMediaSourceCapabilities::emptyCapabilities(); }
-        const RealtimeMediaSourceSettings& settings() final { return m_settings; }
+        const RealtimeMediaSourceSettings& settings() final;
+        void settingsDidChange(OptionSet<RealtimeMediaSourceSettings::Flag>) final;
 
         void captureCanvas();
         void requestFrameTimerFired();
@@ -75,7 +76,7 @@
         std::optional<double> m_frameRequestRate;
         Timer m_requestFrameTimer;
         Timer m_canvasChangedTimer;
-        RealtimeMediaSourceSettings m_settings;
+        std::optional<RealtimeMediaSourceSettings> m_currentSettings;
         HTMLCanvasElement* m_canvas;
         RefPtr<Image> m_currentImage;
     };

Modified: trunk/Source/WebCore/platform/mediastream/RealtimeIncomingVideoSource.cpp (236645 => 236646)


--- trunk/Source/WebCore/platform/mediastream/RealtimeIncomingVideoSource.cpp	2018-09-30 07:02:39 UTC (rev 236645)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeIncomingVideoSource.cpp	2018-09-30 14:32:15 UTC (rev 236646)
@@ -42,8 +42,6 @@
     , m_videoTrack(WTFMove(videoTrack))
 {
     setName("remote video");
-    m_currentSettings.setWidth(640);
-    m_currentSettings.setHeight(480);
     notifyMutedChange(!m_videoTrack);
 }
 
@@ -77,9 +75,29 @@
 
 const RealtimeMediaSourceSettings& RealtimeIncomingVideoSource::settings()
 {
-    return m_currentSettings;
+    if (m_currentSettings)
+        return m_currentSettings.value();
+
+    RealtimeMediaSourceSupportedConstraints constraints;
+    constraints.setSupportsWidth(true);
+    constraints.setSupportsHeight(true);
+
+    RealtimeMediaSourceSettings settings;
+    auto& size = this->size();
+    settings.setWidth(size.width());
+    settings.setHeight(size.height());
+    settings.setSupportedConstraints(constraints);
+
+    m_currentSettings = WTFMove(settings);
+    return m_currentSettings.value();
 }
 
+void RealtimeIncomingVideoSource::settingsDidChange(OptionSet<RealtimeMediaSourceSettings::Flag> settings)
+{
+    if (settings.containsAny({ RealtimeMediaSourceSettings::Flag::Width, RealtimeMediaSourceSettings::Flag::Height }))
+        m_currentSettings = std::nullopt;
+}
+
 } // namespace WebCore
 
 #endif // USE(LIBWEBRTC)

Modified: trunk/Source/WebCore/platform/mediastream/RealtimeIncomingVideoSource.h (236645 => 236646)


--- trunk/Source/WebCore/platform/mediastream/RealtimeIncomingVideoSource.h	2018-09-30 07:02:39 UTC (rev 236645)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeIncomingVideoSource.h	2018-09-30 14:32:15 UTC (rev 236646)
@@ -60,16 +60,16 @@
 protected:
     RealtimeIncomingVideoSource(rtc::scoped_refptr<webrtc::VideoTrackInterface>&&, String&&);
 
-    RealtimeMediaSourceSettings m_currentSettings;
-
 private:
     // RealtimeMediaSource API
     void startProducingData() final;
     void stopProducingData()  final;
+    void settingsDidChange(OptionSet<RealtimeMediaSourceSettings::Flag>) final;
 
     const RealtimeMediaSourceCapabilities& capabilities() final;
     const RealtimeMediaSourceSettings& settings() final;
 
+    std::optional<RealtimeMediaSourceSettings> m_currentSettings;
     rtc::scoped_refptr<webrtc::VideoTrackInterface> m_videoTrack;
 };
 

Modified: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp (236645 => 236646)


--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp	2018-09-30 07:02:39 UTC (rev 236645)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp	2018-09-30 14:32:15 UTC (rev 236646)
@@ -133,8 +133,14 @@
 
 void RealtimeMediaSource::settingsDidChange(OptionSet<RealtimeMediaSourceSettings::Flag>)
 {
+}
+
+void RealtimeMediaSource::notifySettingsDidChangeObservers(OptionSet<RealtimeMediaSourceSettings::Flag> flags)
+{
     ASSERT(isMainThread());
 
+    settingsDidChange(flags);
+
     if (m_pendingSettingsDidChangeNotification)
         return;
     m_pendingSettingsDidChangeNotification = true;
@@ -864,7 +870,7 @@
         changed.add(RealtimeMediaSourceSettings::Flag::Height);
 
     m_size = size;
-    settingsDidChange(changed);
+    notifySettingsDidChangeObservers(changed);
 }
 
 void RealtimeMediaSource::setFrameRate(double rate)
@@ -873,7 +879,7 @@
         return;
 
     m_frameRate = rate;
-    settingsDidChange(RealtimeMediaSourceSettings::Flag::FrameRate);
+    notifySettingsDidChangeObservers(RealtimeMediaSourceSettings::Flag::FrameRate);
 }
 
 void RealtimeMediaSource::setAspectRatio(double ratio)
@@ -883,7 +889,7 @@
 
     m_aspectRatio = ratio;
     m_size.setHeight(m_size.width() / ratio);
-    settingsDidChange({ RealtimeMediaSourceSettings::Flag::AspectRatio, RealtimeMediaSourceSettings::Flag::Height });
+    notifySettingsDidChangeObservers({ RealtimeMediaSourceSettings::Flag::AspectRatio, RealtimeMediaSourceSettings::Flag::Height });
 }
 
 void RealtimeMediaSource::setFacingMode(RealtimeMediaSourceSettings::VideoFacingMode mode)
@@ -892,7 +898,7 @@
         return;
 
     m_facingMode = mode;
-    settingsDidChange(RealtimeMediaSourceSettings::Flag::FacingMode);
+    notifySettingsDidChangeObservers(RealtimeMediaSourceSettings::Flag::FacingMode);
 }
 
 void RealtimeMediaSource::setVolume(double volume)
@@ -901,7 +907,7 @@
         return;
 
     m_volume = volume;
-    settingsDidChange(RealtimeMediaSourceSettings::Flag::Volume);
+    notifySettingsDidChangeObservers(RealtimeMediaSourceSettings::Flag::Volume);
 }
 
 void RealtimeMediaSource::setSampleRate(int rate)
@@ -910,7 +916,7 @@
         return;
 
     m_sampleRate = rate;
-    settingsDidChange(RealtimeMediaSourceSettings::Flag::SampleRate);
+    notifySettingsDidChangeObservers(RealtimeMediaSourceSettings::Flag::SampleRate);
 }
 
 std::optional<Vector<int>> RealtimeMediaSource::discreteSampleRates() const
@@ -924,7 +930,7 @@
         return;
 
     m_sampleSize = size;
-    settingsDidChange(RealtimeMediaSourceSettings::Flag::SampleSize);
+    notifySettingsDidChangeObservers(RealtimeMediaSourceSettings::Flag::SampleSize);
 }
 
 std::optional<Vector<int>> RealtimeMediaSource::discreteSampleSizes() const
@@ -938,7 +944,7 @@
         return;
 
     m_echoCancellation = echoCancellation;
-    settingsDidChange(RealtimeMediaSourceSettings::Flag::EchoCancellation);
+    notifySettingsDidChangeObservers(RealtimeMediaSourceSettings::Flag::EchoCancellation);
 }
 
 void RealtimeMediaSource::scheduleDeferredTask(WTF::Function<void()>&& function)

Modified: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.h (236645 => 236646)


--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.h	2018-09-30 07:02:39 UTC (rev 236645)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.h	2018-09-30 14:32:15 UTC (rev 236646)
@@ -154,8 +154,6 @@
     bool supportsConstraints(const MediaConstraints&, String&);
     bool supportsConstraint(const MediaConstraint&);
 
-    virtual void settingsDidChange(OptionSet<RealtimeMediaSourceSettings::Flag>);
-
     virtual bool isIsolated() const { return false; }
 
     virtual bool isCaptureSource() const { return false; }
@@ -187,6 +185,7 @@
 
     void notifyMutedObservers() const;
     void notifyMutedChange(bool muted);
+    void notifySettingsDidChangeObservers(OptionSet<RealtimeMediaSourceSettings::Flag>);
 
     void initializeVolume(double volume) { m_volume = volume; }
     void initializeSampleRate(int sampleRate) { m_sampleRate = sampleRate; }
@@ -198,7 +197,9 @@
 private:
     virtual void startProducingData() { }
     virtual void stopProducingData() { }
+    virtual void settingsDidChange(OptionSet<RealtimeMediaSourceSettings::Flag>);
 
+
     void forEachObserver(const WTF::Function<void(Observer&)>&) const;
 
     bool m_muted { false };

Modified: trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp (236645 => 236646)


--- trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp	2018-09-30 07:02:39 UTC (rev 236645)
+++ trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp	2018-09-30 14:32:15 UTC (rev 236646)
@@ -176,8 +176,6 @@
 {
     if (settings.contains(RealtimeMediaSourceSettings::Flag::SampleRate))
         m_capturer->setSampleRate(sampleRate());
-
-    RealtimeMediaSource::settingsDidChange(settings);
 }
 
 const RealtimeMediaSourceSettings& GStreamerAudioCaptureSource::settings()

Modified: trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp (236645 => 236646)


--- trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp	2018-09-30 07:02:39 UTC (rev 236645)
+++ trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp	2018-09-30 14:32:15 UTC (rev 236646)
@@ -133,8 +133,6 @@
         m_capturer->setSize(size().width(), size().height());
     if (settings.contains(RealtimeMediaSourceSettings::Flag::FrameRate))
         m_capturer->setFrameRate(frameRate());
-
-    RealtimeMediaSource::settingsDidChange(settings);
 }
 
 void GStreamerVideoCaptureSource::startProducingData()

Modified: trunk/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm (236645 => 236646)


--- trunk/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm	2018-09-30 07:02:39 UTC (rev 236645)
+++ trunk/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm	2018-09-30 14:32:15 UTC (rev 236646)
@@ -238,10 +238,9 @@
         [m_session commitConfiguration];
 }
 
-void AVVideoCaptureSource::settingsDidChange(OptionSet<RealtimeMediaSourceSettings::Flag> settings)
+void AVVideoCaptureSource::settingsDidChange(OptionSet<RealtimeMediaSourceSettings::Flag>)
 {
     m_currentSettings = std::nullopt;
-    RealtimeMediaSource::settingsDidChange(settings);
 }
 
 const RealtimeMediaSourceSettings& AVVideoCaptureSource::settings()

Modified: trunk/Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.cpp (236645 => 236646)


--- trunk/Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.cpp	2018-09-30 07:02:39 UTC (rev 236645)
+++ trunk/Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.cpp	2018-09-30 14:32:15 UTC (rev 236646)
@@ -888,7 +888,6 @@
     }
 
     m_currentSettings = std::nullopt;
-    RealtimeMediaSource::settingsDidChange(settings);
 }
 
 void CoreAudioCaptureSource::scheduleReconfiguration()

Modified: trunk/Source/WebCore/platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp (236645 => 236646)


--- trunk/Source/WebCore/platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp	2018-09-30 07:02:39 UTC (rev 236645)
+++ trunk/Source/WebCore/platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp	2018-09-30 14:32:15 UTC (rev 236646)
@@ -117,8 +117,6 @@
     }
 
     m_currentSettings = { };
-
-    RealtimeMediaSource::settingsDidChange(settings);
 }
 
 void DisplayCaptureSourceCocoa::startProducingData()

Modified: trunk/Source/WebCore/platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm (236645 => 236646)


--- trunk/Source/WebCore/platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm	2018-09-30 07:02:39 UTC (rev 236645)
+++ trunk/Source/WebCore/platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm	2018-09-30 14:32:15 UTC (rev 236646)
@@ -227,18 +227,10 @@
 void RealtimeIncomingVideoSourceCocoa::processNewSample(CMSampleBufferRef sample, unsigned width, unsigned height, MediaSample::VideoRotation rotation)
 {
     m_buffer = sample;
-    if (width != m_currentSettings.width() || height != m_currentSettings.height()) {
-        OptionSet<RealtimeMediaSourceSettings::Flag> changed;
-        if (width != m_currentSettings.width())
-            changed.add(RealtimeMediaSourceSettings::Flag::Width);
-        if (height != m_currentSettings.height())
-            changed.add(RealtimeMediaSourceSettings::Flag::Height);
+    auto size = this->size();
+    if (WTF::safeCast<int>(width) != size.width() || WTF::safeCast<int>(height) != size.height())
+        setSize(IntSize(width, height));
 
-        m_currentSettings.setWidth(width);
-        m_currentSettings.setHeight(height);
-        settingsDidChange(changed);
-    }
-
     videoSampleAvailable(MediaSampleAVFObjC::create(sample, rotation));
 }
 

Modified: trunk/Source/WebCore/platform/mock/MockRealtimeAudioSource.cpp (236645 => 236646)


--- trunk/Source/WebCore/platform/mock/MockRealtimeAudioSource.cpp	2018-09-30 07:02:39 UTC (rev 236645)
+++ trunk/Source/WebCore/platform/mock/MockRealtimeAudioSource.cpp	2018-09-30 14:32:15 UTC (rev 236646)
@@ -110,10 +110,9 @@
     return m_capabilities.value();
 }
 
-void MockRealtimeAudioSource::settingsDidChange(OptionSet<RealtimeMediaSourceSettings::Flag> settings)
+void MockRealtimeAudioSource::settingsDidChange(OptionSet<RealtimeMediaSourceSettings::Flag>)
 {
     m_currentSettings = std::nullopt;
-    RealtimeMediaSource::settingsDidChange(settings);
 }
 
 void MockRealtimeAudioSource::startProducingData()

Modified: trunk/Source/WebCore/platform/mock/MockRealtimeVideoSource.cpp (236645 => 236646)


--- trunk/Source/WebCore/platform/mock/MockRealtimeVideoSource.cpp	2018-09-30 07:02:39 UTC (rev 236645)
+++ trunk/Source/WebCore/platform/mock/MockRealtimeVideoSource.cpp	2018-09-30 14:32:15 UTC (rev 236646)
@@ -184,8 +184,6 @@
         m_statsFontSize = m_baseFontSize * .5;
         m_imageBuffer = nullptr;
     }
-
-    RealtimeVideoSource::settingsDidChange(settings);
 }
 
 void MockRealtimeVideoSource::startCaptureTimer()

Modified: trunk/Source/WebKit/ChangeLog (236645 => 236646)


--- trunk/Source/WebKit/ChangeLog	2018-09-30 07:02:39 UTC (rev 236645)
+++ trunk/Source/WebKit/ChangeLog	2018-09-30 14:32:15 UTC (rev 236646)
@@ -1,5 +1,16 @@
 2018-09-30  Eric Carlson  <[email protected]>
 
+        [MediaStream] Clean up RealtimeMediaSource settings change handling
+        https://bugs.webkit.org/show_bug.cgi?id=189998
+        <rdar://problem/44797884>
+
+        Reviewed by Youenn Fablet.
+
+        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
+        (WebKit::UserMediaCaptureManager::Source::setSettings):
+
+2018-09-30  Eric Carlson  <[email protected]>
+
         [MediaStream] Use display-specific capture factories
         https://bugs.webkit.org/show_bug.cgi?id=190043
         <rdar://problem/44834412>

Modified: trunk/Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.cpp (236645 => 236646)


--- trunk/Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.cpp	2018-09-30 07:02:39 UTC (rev 236645)
+++ trunk/Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.cpp	2018-09-30 14:32:15 UTC (rev 236646)
@@ -78,7 +78,7 @@
     {
         auto changed = m_settings.difference(settings);
         m_settings = WTFMove(settings);
-        settingsDidChange(changed);
+        notifySettingsDidChangeObservers(changed);
     }
 
     const CAAudioStreamDescription& description() const { return m_description; }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to