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();