Title: [292027] trunk/Source
Revision
292027
Author
you...@apple.com
Date
2022-03-29 04:40:08 -0700 (Tue, 29 Mar 2022)

Log Message

RealtimeMediaSource::Type::Video is misleading as it is actually referring to camera sources
https://bugs.webkit.org/show_bug.cgi?id=238449

Reviewed by Eric Carlson.

Source/WebCore:

Make RealtimeMediaSource::Type a boolean (audio or video) and use deviceType wherever more fine grained information is needed.
No change of behavior.

* Modules/mediastream/MediaStream.cpp:
(WebCore::MediaStream::getAudioTracks const):
(WebCore::MediaStream::getVideoTracks const):
* Modules/mediastream/MediaStreamTrack.cpp:
(WebCore::MediaStreamTrack::MediaStreamTrack):
(WebCore::MediaStreamTrack::~MediaStreamTrack):
(WebCore::MediaStreamTrack::kind const):
(WebCore::MediaStreamTrack::setContentHint):
(WebCore::updateVideoCaptureAccordingMicrophoneInterruption):
(WebCore::trackTypeForMediaProducerCaptureKind):
(WebCore::MediaStreamTrack::endCapture):
(WebCore::MediaStreamTrack::trackEnded):
(WebCore::MediaStreamTrack::isCapturingAudio const):
* Modules/mediastream/MediaStreamTrack.h:
(WebCore::MediaStreamTrack::isVideo const):
(WebCore::MediaStreamTrack::isAudio const):
(WebCore::MediaStreamTrack::hasVideo const): Deleted.
(WebCore::MediaStreamTrack::hasAudio const): Deleted.
* Modules/mediastream/UserMediaRequest.cpp:
(WebCore::UserMediaRequest::mediaStreamDidFail): Deleted.
* Modules/mediastream/UserMediaRequest.h:
* Modules/mediastream/gstreamer/GStreamerMediaEndpoint.cpp:
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
(WebCore::LibWebRTCMediaEndpoint::addTrack):
(WebCore::LibWebRTCMediaEndpoint::createSourceAndRTCTrack):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
(WebCore::updateTracksOfKind):
* platform/mediarecorder/MediaRecorderPrivate.cpp:
(WebCore::MediaRecorderPrivate::selectTracks):
* platform/mediastream/MediaStreamPrivate.cpp:
(WebCore::MediaStreamPrivate::hasVideo const):
(WebCore::MediaStreamPrivate::hasAudio const):
(WebCore::MediaStreamPrivate::updateActiveVideoTrack):
(WebCore::MediaStreamPrivate::monitorOrientation):
* platform/mediastream/MediaStreamTrackPrivate.cpp:
(WebCore::MediaStreamTrackPrivate::type const): Deleted.
* platform/mediastream/MediaStreamTrackPrivate.h:
* platform/mediastream/RealtimeMediaSource.cpp:
(WebCore::convertEnumerationToString):
* platform/mediastream/RealtimeMediaSource.h:
* platform/mediastream/cocoa/DisplayCaptureSourceCocoa.cpp:
(WebCore::DisplayCaptureSourceCocoa::DisplayCaptureSourceCocoa):
(WebCore::sourceTypeForDevice): Deleted.
* platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp:
* testing/Internals.cpp:
(WebCore::Internals::stopObservingRealtimeMediaSource):
(WebCore::Internals::observeMediaStreamTrack):

Source/WebKit:

* Shared/WebCoreArgumentCoders.h:
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
(WebKit::UserMediaCaptureManagerProxy::SourceProxy::SourceProxy):
(WebKit::UserMediaCaptureManagerProxy::SourceProxy::~SourceProxy):
* WebProcess/cocoa/RemoteRealtimeMediaSource.cpp:
(WebKit::toSourceType):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (292026 => 292027)


--- trunk/Source/WebCore/ChangeLog	2022-03-29 09:43:07 UTC (rev 292026)
+++ trunk/Source/WebCore/ChangeLog	2022-03-29 11:40:08 UTC (rev 292027)
@@ -1,3 +1,61 @@
+2022-03-29  Youenn Fablet  <you...@apple.com>
+
+        RealtimeMediaSource::Type::Video is misleading as it is actually referring to camera sources
+        https://bugs.webkit.org/show_bug.cgi?id=238449
+
+        Reviewed by Eric Carlson.
+
+        Make RealtimeMediaSource::Type a boolean (audio or video) and use deviceType wherever more fine grained information is needed.
+        No change of behavior.
+
+        * Modules/mediastream/MediaStream.cpp:
+        (WebCore::MediaStream::getAudioTracks const):
+        (WebCore::MediaStream::getVideoTracks const):
+        * Modules/mediastream/MediaStreamTrack.cpp:
+        (WebCore::MediaStreamTrack::MediaStreamTrack):
+        (WebCore::MediaStreamTrack::~MediaStreamTrack):
+        (WebCore::MediaStreamTrack::kind const):
+        (WebCore::MediaStreamTrack::setContentHint):
+        (WebCore::updateVideoCaptureAccordingMicrophoneInterruption):
+        (WebCore::trackTypeForMediaProducerCaptureKind):
+        (WebCore::MediaStreamTrack::endCapture):
+        (WebCore::MediaStreamTrack::trackEnded):
+        (WebCore::MediaStreamTrack::isCapturingAudio const):
+        * Modules/mediastream/MediaStreamTrack.h:
+        (WebCore::MediaStreamTrack::isVideo const):
+        (WebCore::MediaStreamTrack::isAudio const):
+        (WebCore::MediaStreamTrack::hasVideo const): Deleted.
+        (WebCore::MediaStreamTrack::hasAudio const): Deleted.
+        * Modules/mediastream/UserMediaRequest.cpp:
+        (WebCore::UserMediaRequest::mediaStreamDidFail): Deleted.
+        * Modules/mediastream/UserMediaRequest.h:
+        * Modules/mediastream/gstreamer/GStreamerMediaEndpoint.cpp:
+        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
+        (WebCore::LibWebRTCMediaEndpoint::addTrack):
+        (WebCore::LibWebRTCMediaEndpoint::createSourceAndRTCTrack):
+        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
+        (WebCore::updateTracksOfKind):
+        * platform/mediarecorder/MediaRecorderPrivate.cpp:
+        (WebCore::MediaRecorderPrivate::selectTracks):
+        * platform/mediastream/MediaStreamPrivate.cpp:
+        (WebCore::MediaStreamPrivate::hasVideo const):
+        (WebCore::MediaStreamPrivate::hasAudio const):
+        (WebCore::MediaStreamPrivate::updateActiveVideoTrack):
+        (WebCore::MediaStreamPrivate::monitorOrientation):
+        * platform/mediastream/MediaStreamTrackPrivate.cpp:
+        (WebCore::MediaStreamTrackPrivate::type const): Deleted.
+        * platform/mediastream/MediaStreamTrackPrivate.h:
+        * platform/mediastream/RealtimeMediaSource.cpp:
+        (WebCore::convertEnumerationToString):
+        * platform/mediastream/RealtimeMediaSource.h:
+        * platform/mediastream/cocoa/DisplayCaptureSourceCocoa.cpp:
+        (WebCore::DisplayCaptureSourceCocoa::DisplayCaptureSourceCocoa):
+        (WebCore::sourceTypeForDevice): Deleted.
+        * platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp:
+        * testing/Internals.cpp:
+        (WebCore::Internals::stopObservingRealtimeMediaSource):
+        (WebCore::Internals::observeMediaStreamTrack):
+
 2022-03-29  Said Abou-Hallawa  <s...@apple.com>
 
         REGRESSION(r291771): [ iOS ] Text sometimes draw with incorrect color

Modified: trunk/Source/WebCore/Modules/mediastream/MediaStream.cpp (292026 => 292027)


--- trunk/Source/WebCore/Modules/mediastream/MediaStream.cpp	2022-03-29 09:43:07 UTC (rev 292026)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStream.cpp	2022-03-29 11:40:08 UTC (rev 292027)
@@ -156,7 +156,7 @@
 MediaStreamTrackVector MediaStream::getAudioTracks() const
 {
     return filteredTracks([] (auto& track) mutable {
-        return track.hasAudio();
+        return track.isAudio();
     });
 }
 
@@ -163,7 +163,7 @@
 MediaStreamTrackVector MediaStream::getVideoTracks() const
 {
     return filteredTracks([] (auto& track) mutable {
-        return track.hasVideo();
+        return track.isVideo();
     });
 }
 

Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp (292026 => 292027)


--- trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp	2022-03-29 09:43:07 UTC (rev 292026)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp	2022-03-29 11:40:08 UTC (rev 292027)
@@ -94,7 +94,7 @@
     m_isInterrupted = m_private->source().interrupted();
     allCaptureTracks().add(this);
 
-    if (m_private->hasAudio())
+    if (m_private->isAudio())
         PlatformMediaSessionManager::sharedManager().addAudioCaptureSource(*this);
 }
 
@@ -107,7 +107,7 @@
 
     allCaptureTracks().remove(this);
 
-    if (m_private->hasAudio())
+    if (m_private->isAudio())
         PlatformMediaSessionManager::sharedManager().removeAudioCaptureSource(*this);
 }
 
@@ -116,7 +116,7 @@
     static MainThreadNeverDestroyed<const AtomString> audioKind("audio", AtomString::ConstructFromLiteral);
     static MainThreadNeverDestroyed<const AtomString> videoKind("video", AtomString::ConstructFromLiteral);
 
-    if (m_private->hasAudio())
+    if (m_private->isAudio())
         return audioKind;
     return videoKind;
 }
@@ -160,7 +160,7 @@
 void MediaStreamTrack::setContentHint(const String& hintValue)
 {
     MediaStreamTrackPrivate::HintValue value;
-    if (m_private->hasAudio()) {
+    if (m_private->isAudio()) {
         if (hintValue == "")
             value = MediaStreamTrackPrivate::HintValue::Empty;
         else if (hintValue == "speech")
@@ -485,7 +485,7 @@
         if (!captureTrack->document() || captureTrack->document()->page() != page)
             continue;
         auto& source = captureTrack->source();
-        if (!source.isEnded() && source.type() == RealtimeMediaSource::Type::Video)
+        if (!source.isEnded() && source.deviceType() == CaptureDevice::DeviceType::Camera)
             source.setMuted(isMicrophoneInterrupted);
     }
 }
@@ -522,19 +522,20 @@
     }
 }
 
-static MediaProducerMediaCaptureKind trackTypeForMediaProducerCaptureKind(RealtimeMediaSource::Type type)
+static MediaProducerMediaCaptureKind trackTypeForMediaProducerCaptureKind(CaptureDevice::DeviceType type)
 {
     switch (type) {
-    case RealtimeMediaSource::Type::Audio:
+    case CaptureDevice::DeviceType::Microphone:
         return MediaProducerMediaCaptureKind::Microphone;
-    case RealtimeMediaSource::Type::SystemAudio:
+    case CaptureDevice::DeviceType::SystemAudio:
         return MediaProducerMediaCaptureKind::SystemAudio;
-    case RealtimeMediaSource::Type::Video:
+    case CaptureDevice::DeviceType::Camera:
         return MediaProducerMediaCaptureKind::Camera;
-    case RealtimeMediaSource::Type::Screen:
-    case RealtimeMediaSource::Type::Window:
+    case CaptureDevice::DeviceType::Screen:
+    case CaptureDevice::DeviceType::Window:
         return MediaProducerMediaCaptureKind::Display;
-    case RealtimeMediaSource::Type::None:
+    case CaptureDevice::DeviceType::Speaker:
+    case CaptureDevice::DeviceType::Unknown:
         break;
     }
     RELEASE_ASSERT_NOT_REACHED();
@@ -546,7 +547,7 @@
     for (auto* captureTrack : allCaptureTracks()) {
         if (captureTrack->document() != &document)
             continue;
-        if (kind != MediaProducerMediaCaptureKind::EveryKind && kind != trackTypeForMediaProducerCaptureKind(captureTrack->privateTrack().type()))
+        if (kind != MediaProducerMediaCaptureKind::EveryKind && kind != trackTypeForMediaProducerCaptureKind(captureTrack->privateTrack().deviceType()))
             continue;
         captureTrack->stopTrack(MediaStreamTrack::StopMode::PostEvent);
         didEndCapture = true;
@@ -563,7 +564,7 @@
 
 void MediaStreamTrack::trackEnded(MediaStreamTrackPrivate&)
 {
-    if (m_isCaptureTrack && m_private->hasAudio())
+    if (m_isCaptureTrack && m_private->isAudio())
         PlatformMediaSessionManager::sharedManager().removeAudioCaptureSource(*this);
 
     ALWAYS_LOG(LOGIDENTIFIER);
@@ -672,7 +673,7 @@
 
 bool MediaStreamTrack::isCapturingAudio() const
 {
-    ASSERT(isCaptureTrack() && m_private->hasAudio());
+    ASSERT(isCaptureTrack() && m_private->isAudio());
     return !ended() && !muted();
 }
 

Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h (292026 => 292027)


--- trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h	2022-03-29 09:43:07 UTC (rev 292026)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h	2022-03-29 11:40:08 UTC (rev 292027)
@@ -100,8 +100,8 @@
     void stopTrack(StopMode = StopMode::Silently);
 
     bool isCaptureTrack() const { return m_isCaptureTrack; }
-    bool hasVideo() const { return m_private->hasVideo(); }
-    bool hasAudio() const { return m_private->hasAudio(); }
+    bool isVideo() const { return m_private->isVideo(); }
+    bool isAudio() const { return m_private->isAudio(); }
 
     struct TrackSettings {
         std::optional<int> width;

Modified: trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.cpp (292026 => 292027)


--- trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.cpp	2022-03-29 09:43:07 UTC (rev 292026)
+++ trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.cpp	2022-03-29 11:40:08 UTC (rev 292027)
@@ -260,33 +260,6 @@
     return downcast<Document>(scriptExecutionContext());
 }
 
-void UserMediaRequest::mediaStreamDidFail(RealtimeMediaSource::Type type)
-{
-    RELEASE_LOG(MediaStream, "UserMediaRequest::mediaStreamDidFail");
-    const char* typeDescription = "";
-    switch (type) {
-    case RealtimeMediaSource::Type::Audio:
-        typeDescription = "audio";
-        break;
-    case RealtimeMediaSource::Type::Video:
-        typeDescription = "video";
-        break;
-    case RealtimeMediaSource::Type::Screen:
-        typeDescription = "screen";
-        break;
-    case RealtimeMediaSource::Type::Window:
-        typeDescription = "window";
-        break;
-    case RealtimeMediaSource::Type::SystemAudio:
-        typeDescription = "system audio";
-        break;
-    case RealtimeMediaSource::Type::None:
-        typeDescription = "unknown";
-        break;
-    }
-    m_promise->reject(NotReadableError, makeString("Failed starting capture of a "_s, typeDescription, " track"_s));
-}
-
 } // namespace WebCore
 
 #endif // ENABLE(MEDIA_STREAM)

Modified: trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.h (292026 => 292027)


--- trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.h	2022-03-29 09:43:07 UTC (rev 292026)
+++ trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.h	2022-03-29 11:40:08 UTC (rev 292027)
@@ -84,8 +84,6 @@
     void stop() final;
     const char* activeDOMObjectName() const final;
 
-    void mediaStreamDidFail(RealtimeMediaSource::Type);
-
     UserMediaRequestIdentifier m_identifier;
 
     Vector<String> m_videoDeviceUIDs;

Modified: trunk/Source/WebCore/Modules/mediastream/gstreamer/GStreamerMediaEndpoint.cpp (292026 => 292027)


--- trunk/Source/WebCore/Modules/mediastream/gstreamer/GStreamerMediaEndpoint.cpp	2022-03-29 09:43:07 UTC (rev 292026)
+++ trunk/Source/WebCore/Modules/mediastream/gstreamer/GStreamerMediaEndpoint.cpp	2022-03-29 11:40:08 UTC (rev 292027)
@@ -586,7 +586,7 @@
     GStreamerRtpSenderBackend::Source source;
     GRefPtr<GstWebRTCRTPSender> rtcSender;
 
-    if (track.privateTrack().hasAudio()) {
+    if (track.privateTrack().isAudio()) {
         GST_DEBUG_OBJECT(m_pipeline.get(), "Adding outgoing audio source");
         auto audioSource = RealtimeOutgoingAudioSourceGStreamer::create(track.privateTrack());
         configureAndLinkSource(audioSource);
@@ -594,7 +594,7 @@
         rtcSender = audioSource->sender();
         source = WTFMove(audioSource);
     } else {
-        ASSERT(track.privateTrack().hasVideo());
+        ASSERT(track.privateTrack().isVideo());
         GST_DEBUG_OBJECT(m_pipeline.get(), "Adding outgoing video source");
         auto videoSource = RealtimeOutgoingVideoSourceGStreamer::create(track.privateTrack());
         configureAndLinkSource(videoSource);
@@ -880,10 +880,10 @@
 
 GStreamerRtpSenderBackend::Source GStreamerMediaEndpoint::createSourceForTrack(MediaStreamTrack& track)
 {
-    if (track.privateTrack().hasAudio())
+    if (track.privateTrack().isAudio())
         return RealtimeOutgoingAudioSourceGStreamer::create(track.privateTrack());
 
-    ASSERT(track.privateTrack().hasVideo());
+    ASSERT(track.privateTrack().isVideo());
     return RealtimeOutgoingVideoSourceGStreamer::create(track.privateTrack());
 }
 

Modified: trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp (292026 => 292027)


--- trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp	2022-03-29 09:43:07 UTC (rev 292026)
+++ trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp	2022-03-29 11:40:08 UTC (rev 292027)
@@ -204,12 +204,6 @@
         source = WTFMove(videoSource);
         break;
     }
-    case RealtimeMediaSource::Type::Screen:
-    case RealtimeMediaSource::Type::Window:
-    case RealtimeMediaSource::Type::SystemAudio:
-    case RealtimeMediaSource::Type::None:
-        ASSERT_NOT_REACHED();
-        return false;
     }
 
     sender.setSource(WTFMove(source));
@@ -416,10 +410,6 @@
     LibWebRTCRtpSenderBackend::Source source;
     rtc::scoped_refptr<webrtc::MediaStreamTrackInterface> rtcTrack;
     switch (track.privateTrack().type()) {
-    case RealtimeMediaSource::Type::None:
-        ASSERT_NOT_REACHED();
-        break;
-    case RealtimeMediaSource::Type::SystemAudio:
     case RealtimeMediaSource::Type::Audio: {
         auto audioSource = RealtimeOutgoingAudioSource::create(track.privateTrack());
         rtcTrack = m_peerConnectionFactory->CreateAudioTrack(track.id().utf8().data(), audioSource.ptr());
@@ -426,8 +416,6 @@
         source = WTFMove(audioSource);
         break;
     }
-    case RealtimeMediaSource::Type::Screen:
-    case RealtimeMediaSource::Type::Window:
     case RealtimeMediaSource::Type::Video: {
         auto videoSource = RealtimeOutgoingVideoSource::create(track.privateTrack());
         rtcTrack = m_peerConnectionFactory->CreateVideoTrack(track.id().utf8().data(), videoSource.ptr());

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


--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm	2022-03-29 09:43:07 UTC (rev 292026)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm	2022-03-29 11:40:08 UTC (rev 292027)
@@ -836,7 +836,7 @@
 
     bool wantsVideo = trackKind == TrackKind::Video;
     for (const auto& track : currentTracks) {
-        if (wantsVideo != track->hasVideo())
+        if (wantsVideo != track->isVideo())
             continue;
 
         if (!trackMap.contains(track->id()))

Modified: trunk/Source/WebCore/platform/mediarecorder/MediaRecorderPrivate.cpp (292026 => 292027)


--- trunk/Source/WebCore/platform/mediarecorder/MediaRecorderPrivate.cpp	2022-03-29 09:43:07 UTC (rev 292026)
+++ trunk/Source/WebCore/platform/mediarecorder/MediaRecorderPrivate.cpp	2022-03-29 11:40:08 UTC (rev 292027)
@@ -44,8 +44,6 @@
         if (track.ended())
             return;
         switch (track.type()) {
-        case RealtimeMediaSource::Type::Screen:
-        case RealtimeMediaSource::Type::Window:
         case RealtimeMediaSource::Type::Video: {
             auto& settings = track.settings();
             if (!selectedTracks.videoTrack && settings.supportsWidth() && settings.supportsHeight())
@@ -53,12 +51,9 @@
             break;
         }
         case RealtimeMediaSource::Type::Audio:
-        case RealtimeMediaSource::Type::SystemAudio:
             if (!selectedTracks.audioTrack)
                 selectedTracks.audioTrack = &track;
             break;
-        case RealtimeMediaSource::Type::None:
-            break;
         }
     });
     return selectedTracks;

Modified: trunk/Source/WebCore/platform/mediastream/MediaStreamPrivate.cpp (292026 => 292027)


--- trunk/Source/WebCore/platform/mediastream/MediaStreamPrivate.cpp	2022-03-29 09:43:07 UTC (rev 292026)
+++ trunk/Source/WebCore/platform/mediastream/MediaStreamPrivate.cpp	2022-03-29 11:40:08 UTC (rev 292027)
@@ -208,7 +208,7 @@
 bool MediaStreamPrivate::hasVideo() const
 {
     for (auto& track : m_trackSet.values()) {
-        if (track->hasVideo() && track->isActive())
+        if (track->isVideo() && track->isActive())
             return true;
     }
     return false;
@@ -217,7 +217,7 @@
 bool MediaStreamPrivate::hasAudio() const
 {
     for (auto& track : m_trackSet.values()) {
-        if (track->hasAudio() && track->isActive())
+        if (track->isAudio() && track->isActive())
             return true;
     }
     return false;
@@ -248,7 +248,7 @@
 {
     m_activeVideoTrack = nullptr;
     for (auto& track : m_trackSet.values()) {
-        if (!track->ended() && track->hasVideo()) {
+        if (!track->ended() && track->isVideo()) {
             m_activeVideoTrack = track.get();
             break;
         }
@@ -313,7 +313,7 @@
 void MediaStreamPrivate::monitorOrientation(OrientationNotifier& notifier)
 {
     for (auto& track : m_trackSet.values()) {
-        if (track->source().isCaptureSource() && track->type() == RealtimeMediaSource::Type::Video)
+        if (track->source().isCaptureSource() && track->deviceType() == CaptureDevice::DeviceType::Camera)
             track->source().monitorOrientation(notifier);
     }
 }

Modified: trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp (292026 => 292027)


--- trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp	2022-03-29 09:43:07 UTC (rev 292026)
+++ trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp	2022-03-29 11:40:08 UTC (rev 292027)
@@ -173,11 +173,6 @@
     return clonedMediaStreamTrackPrivate;
 }
 
-RealtimeMediaSource::Type MediaStreamTrackPrivate::type() const
-{
-    return m_source->type();
-}
-
 const RealtimeMediaSourceSettings& MediaStreamTrackPrivate::settings() const
 {
     return m_source->settings();

Modified: trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h (292026 => 292027)


--- trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h	2022-03-29 09:43:07 UTC (rev 292026)
+++ trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h	2022-03-29 11:40:08 UTC (rev 292027)
@@ -95,9 +95,10 @@
 
     RealtimeMediaSource& source() { return m_source.get(); }
     const RealtimeMediaSource& source() const { return m_source.get(); }
-    WEBCORE_EXPORT RealtimeMediaSource::Type type() const;
-    bool hasVideo() const { return m_source->hasVideo(); }
-    bool hasAudio() const { return m_source->hasAudio(); }
+    RealtimeMediaSource::Type type() const { return m_source->type(); }
+    CaptureDevice::DeviceType deviceType() const { return m_source->deviceType(); }
+    bool isVideo() const { return m_source->isVideo(); }
+    bool isAudio() const { return m_source->isAudio(); }
 
     void endTrack();
 

Modified: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp (292026 => 292027)


--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp	2022-03-29 09:43:07 UTC (rev 292026)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp	2022-03-29 11:40:08 UTC (rev 292027)
@@ -1144,19 +1144,11 @@
 String convertEnumerationToString(RealtimeMediaSource::Type enumerationValue)
 {
     static const NeverDestroyed<String> values[] = {
-        MAKE_STATIC_STRING_IMPL("None"),
         MAKE_STATIC_STRING_IMPL("Audio"),
-        MAKE_STATIC_STRING_IMPL("Video"),
-        MAKE_STATIC_STRING_IMPL("Screen"),
-        MAKE_STATIC_STRING_IMPL("Window"),
-        MAKE_STATIC_STRING_IMPL("SystemAudio"),
+        MAKE_STATIC_STRING_IMPL("Video")
     };
-    static_assert(static_cast<size_t>(RealtimeMediaSource::Type::None) == 0, "RealtimeMediaSource::Type::None is not 0 as expected");
-    static_assert(static_cast<size_t>(RealtimeMediaSource::Type::Audio) == 1, "RealtimeMediaSource::Type::Audio is not 1 as expected");
-    static_assert(static_cast<size_t>(RealtimeMediaSource::Type::Video) == 2, "RealtimeMediaSource::Type::Video is not 2 as expected");
-    static_assert(static_cast<size_t>(RealtimeMediaSource::Type::Screen) == 3, "RealtimeMediaSource::Type::Screen is not 3 as expected");
-    static_assert(static_cast<size_t>(RealtimeMediaSource::Type::Window) == 4, "RealtimeMediaSource::Type::Window is not 4 as expected");
-    static_assert(static_cast<size_t>(RealtimeMediaSource::Type::SystemAudio) == 5, "RealtimeMediaSource::Type::SystemAudio is not 5 as expected");
+    static_assert(static_cast<size_t>(RealtimeMediaSource::Type::Audio) == 0, "RealtimeMediaSource::Type::Audio is not 0 as expected");
+    static_assert(static_cast<size_t>(RealtimeMediaSource::Type::Video) == 1, "RealtimeMediaSource::Type::Video is not 1 as expected");
     ASSERT(static_cast<size_t>(enumerationValue) < WTF_ARRAY_LENGTH(values));
     return values[static_cast<size_t>(enumerationValue)];
 }

Modified: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.h (292026 => 292027)


--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.h	2022-03-29 09:43:07 UTC (rev 292026)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.h	2022-03-29 11:40:08 UTC (rev 292027)
@@ -115,10 +115,10 @@
 
     const String& persistentID() const { return m_persistentID; }
 
-    enum class Type { None, Audio, Video, Screen, Window, SystemAudio };
+    enum class Type : bool { Audio, Video };
     Type type() const { return m_type; }
-    bool hasVideo() const { return m_type == Type::Video || m_type == Type::Window || m_type == Type::Screen; }
-    bool hasAudio() const { return m_type == Type::Audio || m_type == Type::SystemAudio; }
+    bool isVideo() const { return m_type == Type::Video; }
+    bool isAudio() const { return m_type == Type::Audio; }
 
     virtual void whenReady(CompletionHandler<void(String)>&&);
 

Modified: trunk/Source/WebCore/platform/mediastream/cocoa/DisplayCaptureSourceCocoa.cpp (292026 => 292027)


--- trunk/Source/WebCore/platform/mediastream/cocoa/DisplayCaptureSourceCocoa.cpp	2022-03-29 09:43:07 UTC (rev 292026)
+++ trunk/Source/WebCore/platform/mediastream/cocoa/DisplayCaptureSourceCocoa.cpp	2022-03-29 11:40:08 UTC (rev 292027)
@@ -59,30 +59,6 @@
 
 namespace WebCore {
 
-static RealtimeMediaSource::Type sourceTypeForDevice(CaptureDevice::DeviceType type)
-{
-    switch (type) {
-    case CaptureDevice::DeviceType::Screen:
-        return RealtimeMediaSource::Type::Screen;
-    case CaptureDevice::DeviceType::Window:
-        return RealtimeMediaSource::Type::Window;
-    case CaptureDevice::DeviceType::SystemAudio:
-        return RealtimeMediaSource::Type::SystemAudio;
-    case CaptureDevice::DeviceType::Microphone:
-        return RealtimeMediaSource::Type::Audio;
-    case CaptureDevice::DeviceType::Camera:
-        return RealtimeMediaSource::Type::Video;
-    case CaptureDevice::DeviceType::Speaker:
-    case CaptureDevice::DeviceType::Unknown:
-        ASSERT_NOT_REACHED();
-        return RealtimeMediaSource::Type::None;
-        break;
-    }
-
-    ASSERT_NOT_REACHED();
-    return RealtimeMediaSource::Type::None;
-}
-
 CaptureSourceOrError DisplayCaptureSourceCocoa::create(const CaptureDevice& device, String&& hashSalt, const MediaConstraints* constraints, PageIdentifier pageIdentifier)
 {
     switch (device.type()) {
@@ -130,7 +106,7 @@
 }
 
 DisplayCaptureSourceCocoa::DisplayCaptureSourceCocoa(UniqueRef<Capturer>&& capturer, String&& name, String&& deviceID, String&& hashSalt, PageIdentifier pageIdentifier)
-    : RealtimeMediaSource(sourceTypeForDevice(capturer->deviceType()), WTFMove(name), WTFMove(deviceID), WTFMove(hashSalt), pageIdentifier)
+    : RealtimeMediaSource(RealtimeMediaSource::Type::Video, WTFMove(name), WTFMove(deviceID), WTFMove(hashSalt), pageIdentifier)
     , m_capturer(WTFMove(capturer))
     , m_timer(RunLoop::current(), this, &DisplayCaptureSourceCocoa::emitFrame)
 {

Modified: trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp (292026 => 292027)


--- trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp	2022-03-29 09:43:07 UTC (rev 292026)
+++ trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp	2022-03-29 11:40:08 UTC (rev 292027)
@@ -62,9 +62,9 @@
     if (!track->label().isEmpty())
         gst_tag_list_add(tagList.get(), GST_TAG_MERGE_APPEND, GST_TAG_TITLE, track->label().utf8().data(), nullptr);
 
-    if (track->hasAudio())
+    if (track->isAudio())
         gst_tag_list_add(tagList.get(), GST_TAG_MERGE_APPEND, WEBKIT_MEDIA_TRACK_TAG_KIND, static_cast<int>(AudioTrackPrivate::Kind::Main), nullptr);
-    else if (track->hasVideo()) {
+    else if (track->isVideo()) {
         gst_tag_list_add(tagList.get(), GST_TAG_MERGE_APPEND, WEBKIT_MEDIA_TRACK_TAG_KIND, static_cast<int>(VideoTrackPrivate::Kind::Main), nullptr);
 
         auto& settings = track->settings();
@@ -83,11 +83,11 @@
     GRefPtr<GstCaps> caps;
     GstStreamType type;
 
-    if (track->hasAudio()) {
+    if (track->isAudio()) {
         caps = adoptGRef(gst_static_pad_template_get_caps(&audioSrcTemplate));
         type = GST_STREAM_TYPE_AUDIO;
     } else {
-        RELEASE_ASSERT((track->hasVideo()));
+        RELEASE_ASSERT((track->isVideo()));
         caps = adoptGRef(gst_static_pad_template_get_caps(&videoSrcTemplate));
         type = GST_STREAM_TYPE_VIDEO;
     }
@@ -137,11 +137,11 @@
         , m_padName(padName)
     {
         const char* elementName = nullptr;
-        if (track.hasAudio()) {
+        if (track.isAudio()) {
             m_audioTrack = AudioTrackPrivateMediaStream::create(track);
             elementName = "audiosrc";
         } else {
-            RELEASE_ASSERT(track.hasVideo());
+            RELEASE_ASSERT(track.isVideo());
             m_videoTrack = VideoTrackPrivateMediaStream::create(track);
             elementName = "videosrc";
         }
@@ -178,9 +178,9 @@
 
         GST_DEBUG_OBJECT(m_src.get(), "Starting track/source observation");
         m_track.addObserver(*this);
-        if (m_track.hasAudio())
+        if (m_track.isAudio())
             m_track.source().addAudioSampleObserver(*this);
-        else if (m_track.hasVideo())
+        else if (m_track.isVideo())
             m_track.source().addVideoFrameObserver(*this);
         m_isObserving = true;
     }
@@ -193,9 +193,9 @@
         GST_DEBUG_OBJECT(m_src.get(), "Stopping track/source observation");
         m_isObserving = false;
 
-        if (m_track.hasAudio())
+        if (m_track.isAudio())
             m_track.source().removeAudioSampleObserver(*this);
-        else if (m_track.hasVideo())
+        else if (m_track.isVideo())
             m_track.source().removeVideoFrameObserver(*this);
         m_track.removeObserver(*this);
     }
@@ -202,7 +202,7 @@
 
     void configureAudioTrack(float volume, bool isMuted, bool isPlaying)
     {
-        ASSERT(m_track.hasAudio());
+        ASSERT(m_track.isAudio());
         m_audioTrack->setVolume(volume);
         m_audioTrack->setMuted(isMuted);
         m_audioTrack->setEnabled(m_audioTrack->streamTrack().enabled());
@@ -237,12 +237,12 @@
             gst_pad_set_offset(pad.get(), -m_firstBufferPts);
         }
 
-        if (m_track.hasVideo() && drop)
+        if (m_track.isVideo() && drop)
             drop = doCapsHaveType(caps, "video/x-raw") || GST_BUFFER_FLAG_IS_SET(buffer, GST_BUFFER_FLAG_DELTA_UNIT);
 
         if (drop) {
             m_needsDiscont = true;
-            GST_TRACE_OBJECT(m_src.get(), "%s queue full already... not pushing", m_track.hasVideo() ? "Video" : "Audio");
+            GST_TRACE_OBJECT(m_src.get(), "%s queue full already... not pushing", m_track.isVideo() ? "Video" : "Audio");
             return;
         }
 
@@ -621,12 +621,8 @@
     GST_DEBUG_OBJECT(self, "Stream collection posted");
 }
 
-static void webkitMediaStreamSrcAddPad(WebKitMediaStreamSrc* self, GstPad* target, GstStaticPadTemplate* padTemplate, GRefPtr<GstTagList>&& tags, RealtimeMediaSource::Type sourceType, const String& padName)
+static void webkitMediaStreamSrcAddPad(WebKitMediaStreamSrc* self, GstPad* target, GstStaticPadTemplate* padTemplate, GRefPtr<GstTagList>&& tags, const String& padName)
 {
-    ASSERT(sourceType != RealtimeMediaSource::Type::None);
-    if (sourceType == RealtimeMediaSource::Type::None)
-        return;
-
     GST_DEBUG_OBJECT(self, "%s Ghosting %" GST_PTR_FORMAT, gst_object_get_path_string(GST_OBJECT_CAST(self)), target);
 
     auto* ghostPad = webkitGstGhostPadFromStaticTemplate(padTemplate, padName.ascii().data(), target);
@@ -678,7 +674,7 @@
         gst_event_set_group_id(streamStart, 1);
         gst_pad_push_event(pad, streamStart);
 
-        webkitMediaStreamSrcAddPad(self, pad, data->padTemplate, WTFMove(data->tags), data->sourceType, data->padName);
+        webkitMediaStreamSrcAddPad(self, pad, data->padTemplate, WTFMove(data->tags), data->padName);
         return GST_PAD_PROBE_REMOVE;
     }
     default:
@@ -694,12 +690,12 @@
     unsigned counter;
     GstStaticPadTemplate* padTemplate;
 
-    if (track->hasAudio()) {
+    if (track->isAudio()) {
         padTemplate = &audioSrcTemplate;
         sourceType = "audio";
         counter = self->priv->audioPadCounter.exchangeAdd(1);
     } else {
-        RELEASE_ASSERT(track->hasVideo());
+        RELEASE_ASSERT(track->isVideo());
         padTemplate = &videoSrcTemplate;
         sourceType = "video";
         counter = self->priv->videoPadCounter.exchangeAdd(1);
@@ -731,7 +727,7 @@
         });
     } else {
         gst_pad_set_active(pad.get(), TRUE);
-        webkitMediaStreamSrcAddPad(self, pad.get(), padTemplate, WTFMove(tags), track->source().type(), source->padName());
+        webkitMediaStreamSrcAddPad(self, pad.get(), padTemplate, WTFMove(tags), source->padName());
     }
     gst_element_sync_state_with_parent(element);
 
@@ -758,7 +754,7 @@
     auto tracks = stream->tracks();
     bool _onlyTrack_ = tracks.size() == 1;
     for (auto& track : tracks) {
-        if (!isVideoPlayer && track->hasVideo())
+        if (!isVideoPlayer && track->isVideo())
             continue;
         webkitMediaStreamSrcAddTrack(self, track.get(), onlyTrack);
     }
@@ -829,7 +825,7 @@
 void webkitMediaStreamSrcConfigureAudioTracks(WebKitMediaStreamSrc* self, float volume, bool isMuted, bool isPlaying)
 {
     for (auto& source : self->priv->sources) {
-        if (source->track().hasAudio())
+        if (source->track().isAudio())
             source->configureAudioTrack(volume, isMuted, isPlaying);
     }
 }

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


--- trunk/Source/WebCore/platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.cpp	2022-03-29 09:43:07 UTC (rev 292026)
+++ trunk/Source/WebCore/platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.cpp	2022-03-29 11:40:08 UTC (rev 292027)
@@ -59,8 +59,7 @@
             return WTFMove(error.value().badConstraint);
     }
 
-    auto type = device.type() == CaptureDevice::DeviceType::Screen ? RealtimeMediaSource::Type::Screen : RealtimeMediaSource::Type::Window;
-    auto source = adoptRef(*new MockDisplayCaptureSourceGStreamer(type, WTFMove(mockSource), WTFMove(hashSalt), device.type()));
+    auto source = adoptRef(*new MockDisplayCaptureSourceGStreamer(RealtimeMediaSource::Type::Video, WTFMove(mockSource), WTFMove(hashSalt), device.type()));
     return CaptureSourceOrError(WTFMove(source));
 }
 

Modified: trunk/Source/WebCore/testing/Internals.cpp (292026 => 292027)


--- trunk/Source/WebCore/testing/Internals.cpp	2022-03-29 09:43:07 UTC (rev 292026)
+++ trunk/Source/WebCore/testing/Internals.cpp	2022-03-29 11:40:08 UTC (rev 292027)
@@ -5531,16 +5531,11 @@
 
     switch (m_trackSource->type()) {
     case RealtimeMediaSource::Type::Audio:
-    case RealtimeMediaSource::Type::SystemAudio:
         m_trackSource->removeAudioSampleObserver(*this);
         break;
     case RealtimeMediaSource::Type::Video:
-    case RealtimeMediaSource::Type::Screen:
-    case RealtimeMediaSource::Type::Window:
         m_trackSource->removeVideoFrameObserver(*this);
         break;
-    case RealtimeMediaSource::Type::None:
-        ASSERT_NOT_REACHED();
     }
     m_trackSource->removeObserver(*this);
 
@@ -5558,16 +5553,11 @@
     m_trackSource->addObserver(*this);
     switch (m_trackSource->type()) {
     case RealtimeMediaSource::Type::Audio:
-    case RealtimeMediaSource::Type::SystemAudio:
         m_trackSource->addAudioSampleObserver(*this);
         break;
     case RealtimeMediaSource::Type::Video:
-    case RealtimeMediaSource::Type::Screen:
-    case RealtimeMediaSource::Type::Window:
         m_trackSource->addVideoFrameObserver(*this);
         break;
-    case RealtimeMediaSource::Type::None:
-        ASSERT_NOT_REACHED();
     }
 }
 

Modified: trunk/Source/WebKit/ChangeLog (292026 => 292027)


--- trunk/Source/WebKit/ChangeLog	2022-03-29 09:43:07 UTC (rev 292026)
+++ trunk/Source/WebKit/ChangeLog	2022-03-29 11:40:08 UTC (rev 292027)
@@ -1,3 +1,17 @@
+2022-03-29  Youenn Fablet  <you...@apple.com>
+
+        RealtimeMediaSource::Type::Video is misleading as it is actually referring to camera sources
+        https://bugs.webkit.org/show_bug.cgi?id=238449
+
+        Reviewed by Eric Carlson.
+
+        * Shared/WebCoreArgumentCoders.h:
+        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
+        (WebKit::UserMediaCaptureManagerProxy::SourceProxy::SourceProxy):
+        (WebKit::UserMediaCaptureManagerProxy::SourceProxy::~SourceProxy):
+        * WebProcess/cocoa/RemoteRealtimeMediaSource.cpp:
+        (WebKit::toSourceType):
+
 2022-03-28  Sihui Liu  <sihui_...@apple.com>
 
         Add logging about process entering background to NetworkProcess::processDidResume

Modified: trunk/Source/WebKit/Shared/WebCoreArgumentCoders.h (292026 => 292027)


--- trunk/Source/WebKit/Shared/WebCoreArgumentCoders.h	2022-03-29 09:43:07 UTC (rev 292026)
+++ trunk/Source/WebKit/Shared/WebCoreArgumentCoders.h	2022-03-29 11:40:08 UTC (rev 292027)
@@ -919,7 +919,6 @@
 template<> struct EnumTraits<WebCore::RealtimeMediaSource::Type> {
     using values = EnumValues<
         WebCore::RealtimeMediaSource::Type,
-        WebCore::RealtimeMediaSource::Type::None,
         WebCore::RealtimeMediaSource::Type::Audio,
         WebCore::RealtimeMediaSource::Type::Video
     >;

Modified: trunk/Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp (292026 => 292027)


--- trunk/Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp	2022-03-29 09:43:07 UTC (rev 292026)
+++ trunk/Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp	2022-03-29 11:40:08 UTC (rev 292027)
@@ -68,16 +68,11 @@
         m_source->addObserver(*this);
         switch (m_source->type()) {
         case RealtimeMediaSource::Type::Audio:
-        case RealtimeMediaSource::Type::SystemAudio:
             m_source->addAudioSampleObserver(*this);
             break;
         case RealtimeMediaSource::Type::Video:
-        case RealtimeMediaSource::Type::Screen:
-        case RealtimeMediaSource::Type::Window:
             m_source->addVideoFrameObserver(*this);
             break;
-        case RealtimeMediaSource::Type::None:
-            ASSERT_NOT_REACHED();
         }
     }
 
@@ -85,16 +80,11 @@
     {
         switch (m_source->type()) {
         case RealtimeMediaSource::Type::Audio:
-        case RealtimeMediaSource::Type::SystemAudio:
             m_source->removeAudioSampleObserver(*this);
             break;
         case RealtimeMediaSource::Type::Video:
-        case RealtimeMediaSource::Type::Screen:
-        case RealtimeMediaSource::Type::Window:
             m_source->removeVideoFrameObserver(*this);
             break;
-        case RealtimeMediaSource::Type::None:
-            ASSERT_NOT_REACHED();
         }
         m_source->removeObserver(*this);
 

Modified: trunk/Source/WebKit/WebProcess/cocoa/RemoteRealtimeMediaSource.cpp (292026 => 292027)


--- trunk/Source/WebKit/WebProcess/cocoa/RemoteRealtimeMediaSource.cpp	2022-03-29 09:43:07 UTC (rev 292026)
+++ trunk/Source/WebKit/WebProcess/cocoa/RemoteRealtimeMediaSource.cpp	2022-03-29 11:40:08 UTC (rev 292027)
@@ -40,15 +40,12 @@
 {
     switch (type) {
     case CaptureDevice::DeviceType::Microphone:
+    case CaptureDevice::DeviceType::SystemAudio:
         return RealtimeMediaSource::Type::Audio;
     case CaptureDevice::DeviceType::Camera:
-        return RealtimeMediaSource::Type::Video;
     case CaptureDevice::DeviceType::Screen:
-        return RealtimeMediaSource::Type::Screen;
     case CaptureDevice::DeviceType::Window:
-        return RealtimeMediaSource::Type::Window;
-    case CaptureDevice::DeviceType::SystemAudio:
-        return RealtimeMediaSource::Type::SystemAudio;
+        return RealtimeMediaSource::Type::Video;
     case CaptureDevice::DeviceType::Unknown:
     case CaptureDevice::DeviceType::Speaker:
         ASSERT_NOT_REACHED();
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to