Title: [192028] trunk/Source/WebCore
Revision
192028
Author
eric.carl...@apple.com
Date
2015-11-04 10:55:07 -0800 (Wed, 04 Nov 2015)

Log Message

[MediaStream] A RealtimeMediaSource should begin producing data automatically
https://bugs.webkit.org/show_bug.cgi?id=150851
rdar://problem/23380636

A RealtimeMediaSource should be producing data unless it is muted, which is not under the
control of the application, so a local source should begin producing data as soon as it
is added to a stream. Remove "producing data" and "enabled" observer callbacks because
they don't provide anything that the "muted" callback already provides.

Reviewed by Jer Noble.

* Modules/mediastream/MediaStreamTrack.cpp:
(WebCore::MediaStreamTrack::trackProducingDataChanged): Deleted.
* Modules/mediastream/MediaStreamTrack.h:

* Modules/mediastream/UserMediaRequest.cpp:
(WebCore::UserMediaRequest::didCreateStream): Tell sources to begin producing data.

* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::load): Don't call stream->startProducingData,
  it isn't necessary.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::setReadyState): Call characteristicsChanged
  when the readyState changes.

* platform/mediastream/MediaStreamPrivate.cpp:
(WebCore::MediaStreamPrivate::trackProducingDataChanged): Deleted.
* platform/mediastream/MediaStreamPrivate.h:

* platform/mediastream/MediaStreamTrackPrivate.cpp:
(WebCore::MediaStreamTrackPrivate::sourceProducingDataChanged): Deleted.
(WebCore::MediaStreamTrackPrivate::sourceEnabledChanged): Deleted.
* platform/mediastream/MediaStreamTrackPrivate.h:

* platform/mediastream/RealtimeMediaSource.cpp:
(WebCore::RealtimeMediaSource::isProducingDataDidChange): Deleted.
(WebCore::RealtimeMediaSource::setEnabled): Deleted.
* platform/mediastream/RealtimeMediaSource.h:

* platform/mediastream/mac/AVAudioCaptureSource.mm:
(WebCore::AVAudioCaptureSource::captureOutputDidOutputSampleBufferFromConnection): !enabled() -> muted().

* platform/mediastream/mac/AVMediaCaptureSource.mm:
(WebCore::AVMediaCaptureSource::captureSessionIsRunningDidChange): Don't call isProducingDataDidChange..

* platform/mediastream/mac/AVVideoCaptureSource.mm:
(WebCore::AVVideoCaptureSource::processNewFrame): !enabled() -> muted().

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (192027 => 192028)


--- trunk/Source/WebCore/ChangeLog	2015-11-04 18:48:47 UTC (rev 192027)
+++ trunk/Source/WebCore/ChangeLog	2015-11-04 18:55:07 UTC (rev 192028)
@@ -1,3 +1,52 @@
+2015-11-04  Eric Carlson  <eric.carl...@apple.com>
+
+        [MediaStream] A RealtimeMediaSource should begin producing data automatically
+        https://bugs.webkit.org/show_bug.cgi?id=150851
+        rdar://problem/23380636
+
+        A RealtimeMediaSource should be producing data unless it is muted, which is not under the 
+        control of the application, so a local source should begin producing data as soon as it
+        is added to a stream. Remove "producing data" and "enabled" observer callbacks because 
+        they don't provide anything that the "muted" callback already provides.
+        
+        Reviewed by Jer Noble.
+
+        * Modules/mediastream/MediaStreamTrack.cpp:
+        (WebCore::MediaStreamTrack::trackProducingDataChanged): Deleted.
+        * Modules/mediastream/MediaStreamTrack.h:
+
+        * Modules/mediastream/UserMediaRequest.cpp:
+        (WebCore::UserMediaRequest::didCreateStream): Tell sources to begin producing data.
+
+        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
+        (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::load): Don't call stream->startProducingData,
+          it isn't necessary.
+        (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::setReadyState): Call characteristicsChanged 
+          when the readyState changes.
+
+        * platform/mediastream/MediaStreamPrivate.cpp:
+        (WebCore::MediaStreamPrivate::trackProducingDataChanged): Deleted.
+        * platform/mediastream/MediaStreamPrivate.h:
+
+        * platform/mediastream/MediaStreamTrackPrivate.cpp:
+        (WebCore::MediaStreamTrackPrivate::sourceProducingDataChanged): Deleted.
+        (WebCore::MediaStreamTrackPrivate::sourceEnabledChanged): Deleted.
+        * platform/mediastream/MediaStreamTrackPrivate.h:
+
+        * platform/mediastream/RealtimeMediaSource.cpp:
+        (WebCore::RealtimeMediaSource::isProducingDataDidChange): Deleted.
+        (WebCore::RealtimeMediaSource::setEnabled): Deleted.
+        * platform/mediastream/RealtimeMediaSource.h:
+
+        * platform/mediastream/mac/AVAudioCaptureSource.mm:
+        (WebCore::AVAudioCaptureSource::captureOutputDidOutputSampleBufferFromConnection): !enabled() -> muted().
+
+        * platform/mediastream/mac/AVMediaCaptureSource.mm:
+        (WebCore::AVMediaCaptureSource::captureSessionIsRunningDidChange): Don't call isProducingDataDidChange..
+
+        * platform/mediastream/mac/AVVideoCaptureSource.mm:
+        (WebCore::AVVideoCaptureSource::processNewFrame): !enabled() -> muted().
+
 2015-11-04  Jer Noble  <jer.no...@apple.com>
 
         [iOS] <video> elements without audio tracks should not interrupt music

Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp (192027 => 192028)


--- trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp	2015-11-04 18:48:47 UTC (rev 192027)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp	2015-11-04 18:55:07 UTC (rev 192028)
@@ -233,11 +233,6 @@
     configureTrackRendering();
 }
 
-void MediaStreamTrack::trackProducingDataChanged(MediaStreamTrackPrivate&)
-{
-    configureTrackRendering();
-}
-
 void MediaStreamTrack::trackEnabledChanged(MediaStreamTrackPrivate&)
 {
     configureTrackRendering();

Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h (192027 => 192028)


--- trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h	2015-11-04 18:48:47 UTC (rev 192027)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h	2015-11-04 18:55:07 UTC (rev 192028)
@@ -118,7 +118,6 @@
     void trackEnded(MediaStreamTrackPrivate&) override;
     void trackMutedChanged(MediaStreamTrackPrivate&) override;
     void trackStatesChanged(MediaStreamTrackPrivate&) override;
-    void trackProducingDataChanged(MediaStreamTrackPrivate&) override;
     void trackEnabledChanged(MediaStreamTrackPrivate&) override;
 
     Vector<Observer*> m_observers;

Modified: trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.cpp (192027 => 192028)


--- trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.cpp	2015-11-04 18:48:47 UTC (rev 192027)
+++ trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.cpp	2015-11-04 18:55:07 UTC (rev 192028)
@@ -165,12 +165,16 @@
     // 4 - Create the MediaStream and pass it to the success callback.
     RefPtr<MediaStream> stream = MediaStream::create(*m_scriptExecutionContext, privateStream);
     if (m_audioConstraints) {
-        for (auto& track : stream->getAudioTracks())
+        for (auto& track : stream->getAudioTracks()) {
             track->applyConstraints(*m_audioConstraints);
+            track->source()->startProducingData();
+        }
     }
     if (m_videoConstraints) {
-        for (auto& track : stream->getVideoTracks())
+        for (auto& track : stream->getVideoTracks()) {
             track->applyConstraints(*m_videoConstraints);
+            track->source()->startProducingData();
+        }
     }
 
     m_promise.resolve(stream);

Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm (192027 => 192028)


--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm	2015-11-04 18:48:47 UTC (rev 192027)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm	2015-11-04 18:55:07 UTC (rev 192028)
@@ -122,7 +122,6 @@
 
     m_mediaStreamPrivate = &stream;
     m_mediaStreamPrivate->addObserver(*this);
-    m_mediaStreamPrivate->startProducingData();
 
     m_previewLayer = nullptr;
     m_ended = !m_mediaStreamPrivate->active();
@@ -453,6 +452,7 @@
         return;
 
     m_readyState = readyState;
+    characteristicsChanged();
 
     m_player->readyStateChanged();
 }

Modified: trunk/Source/WebCore/platform/mediastream/MediaStreamPrivate.cpp (192027 => 192028)


--- trunk/Source/WebCore/platform/mediastream/MediaStreamPrivate.cpp	2015-11-04 18:48:47 UTC (rev 192027)
+++ trunk/Source/WebCore/platform/mediastream/MediaStreamPrivate.cpp	2015-11-04 18:55:07 UTC (rev 192028)
@@ -273,13 +273,6 @@
     });
 }
 
-void MediaStreamPrivate::trackProducingDataChanged(MediaStreamTrackPrivate&)
-{
-    scheduleDeferredTask([this] {
-        characteristicsChanged();
-    });
-}
-
 void MediaStreamPrivate::scheduleDeferredTask(std::function<void()> function)
 {
     ASSERT(function);

Modified: trunk/Source/WebCore/platform/mediastream/MediaStreamPrivate.h (192027 => 192028)


--- trunk/Source/WebCore/platform/mediastream/MediaStreamPrivate.h	2015-11-04 18:48:47 UTC (rev 192027)
+++ trunk/Source/WebCore/platform/mediastream/MediaStreamPrivate.h	2015-11-04 18:55:07 UTC (rev 192028)
@@ -103,7 +103,6 @@
     void trackEnded(MediaStreamTrackPrivate&) override { }
     void trackMutedChanged(MediaStreamTrackPrivate&) override;
     void trackStatesChanged(MediaStreamTrackPrivate&) override;
-    void trackProducingDataChanged(MediaStreamTrackPrivate&) override;
     void trackEnabledChanged(MediaStreamTrackPrivate&) override;
 
     void characteristicsChanged();

Modified: trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp (192027 => 192028)


--- trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp	2015-11-04 18:48:47 UTC (rev 192027)
+++ trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp	2015-11-04 18:55:07 UTC (rev 192028)
@@ -178,18 +178,6 @@
         observer->trackStatesChanged(*this);
 }
 
-void MediaStreamTrackPrivate::sourceProducingDataChanged()
-{
-    for (auto& observer : m_observers)
-        observer->trackProducingDataChanged(*this);
-}
-
-void MediaStreamTrackPrivate::sourceEnabledChanged()
-{
-    for (auto& observer : m_observers)
-        observer->trackEnabledChanged(*this);
-}
-
 bool MediaStreamTrackPrivate::preventSourceFromStopping()
 {
     return !m_isEnded;

Modified: trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h (192027 => 192028)


--- trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h	2015-11-04 18:48:47 UTC (rev 192027)
+++ trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h	2015-11-04 18:55:07 UTC (rev 192028)
@@ -48,7 +48,6 @@
         virtual void trackEnded(MediaStreamTrackPrivate&) = 0;
         virtual void trackMutedChanged(MediaStreamTrackPrivate&) = 0;
         virtual void trackStatesChanged(MediaStreamTrackPrivate&) = 0;
-        virtual void trackProducingDataChanged(MediaStreamTrackPrivate&) = 0;
         virtual void trackEnabledChanged(MediaStreamTrackPrivate&) = 0;
     };
     
@@ -101,9 +100,7 @@
     void sourceStopped() override final;
     void sourceMutedChanged() override final;
     void sourceStatesChanged() override final;
-    void sourceProducingDataChanged() override final;
     bool preventSourceFromStopping() override final;
-    void sourceEnabledChanged() override final;
 
     Vector<Observer*> m_observers;
     RefPtr<RealtimeMediaSource> m_source;

Modified: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp (192027 => 192028)


--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp	2015-11-04 18:48:47 UTC (rev 192027)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp	2015-11-04 18:55:07 UTC (rev 192028)
@@ -101,22 +101,6 @@
         observer->sourceStatesChanged();
 }
 
-void RealtimeMediaSource::isProducingDataDidChange()
-{
-    for (auto& observer : m_observers)
-        observer->sourceProducingDataChanged();
-}
-
-void RealtimeMediaSource::setEnabled(bool enabled)
-{
-    if (m_enabled == enabled)
-        return;
-
-    m_enabled = enabled;
-    for (auto& observer : m_observers)
-        observer->sourceEnabledChanged();
-}
-
 bool RealtimeMediaSource::readonly() const
 {
     return m_readonly;

Modified: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.h (192027 => 192028)


--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.h	2015-11-04 18:48:47 UTC (rev 192027)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.h	2015-11-04 18:55:07 UTC (rev 192028)
@@ -63,8 +63,6 @@
         virtual void sourceStopped() = 0;
         virtual void sourceMutedChanged() = 0;
         virtual void sourceStatesChanged() = 0;
-        virtual void sourceProducingDataChanged() = 0;
-        virtual void sourceEnabledChanged() = 0;
 
         // Observer state queries.
         virtual bool preventSourceFromStopping() = 0;
@@ -101,16 +99,12 @@
     virtual bool remote() const { return m_remote; }
     virtual void setRemote(bool remote) { m_remote = remote; }
 
-    virtual void setEnabled(bool);
-    virtual bool enabled() const { return m_enabled; }
-
     void addObserver(Observer*);
     void removeObserver(Observer*);
 
     virtual void startProducingData() { }
     virtual void stopProducingData() { }
     virtual bool isProducingData() const { return false; }
-    virtual void isProducingDataDidChange();
 
     void stop(Observer* callingObserver = nullptr);
     void requestStop(Observer* callingObserver = nullptr);
@@ -137,7 +131,6 @@
     bool m_muted;
     bool m_readonly;
     bool m_remote;
-    bool m_enabled { true };
     
     unsigned m_fitnessScore;
 };

Modified: trunk/Source/WebCore/platform/mediastream/mac/AVAudioCaptureSource.mm (192027 => 192028)


--- trunk/Source/WebCore/platform/mediastream/mac/AVAudioCaptureSource.mm	2015-11-04 18:48:47 UTC (rev 192027)
+++ trunk/Source/WebCore/platform/mediastream/mac/AVAudioCaptureSource.mm	2015-11-04 18:55:07 UTC (rev 192028)
@@ -164,7 +164,7 @@
 
 void AVAudioCaptureSource::captureOutputDidOutputSampleBufferFromConnection(AVCaptureOutputType*, CMSampleBufferRef sampleBuffer, AVCaptureConnectionType*)
 {
-    if (!enabled())
+    if (muted())
         return;
 
     CMFormatDescriptionRef formatDescription = CMSampleBufferGetFormatDescription(sampleBuffer);

Modified: trunk/Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.mm (192027 => 192028)


--- trunk/Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.mm	2015-11-04 18:48:47 UTC (rev 192027)
+++ trunk/Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.mm	2015-11-04 18:55:07 UTC (rev 192028)
@@ -210,7 +210,6 @@
             return;
 
         m_isRunning = state;
-        isProducingDataDidChange();
     });
 }
 

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


--- trunk/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm	2015-11-04 18:48:47 UTC (rev 192027)
+++ trunk/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm	2015-11-04 18:55:07 UTC (rev 192028)
@@ -278,7 +278,7 @@
 {
     // Ignore frames delivered when the session is not running, we want to hang onto the last image
     // delivered before it stopped.
-    if (m_lastImage && (!isProducingData() || !enabled()))
+    if (m_lastImage && (!isProducingData() || muted()))
         return;
 
     CMFormatDescriptionRef formatDescription = CMSampleBufferGetFormatDescription(sampleBuffer.get());
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to