Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: c28c004edc00e3010cb74e7aba5b17d80bd2f99e https://github.com/WebKit/WebKit/commit/c28c004edc00e3010cb74e7aba5b17d80bd2f99e Author: Philippe Normand <ph...@igalia.com> Date: 2025-03-31 (Mon, 31 Mar 2025)
Changed paths: M Source/WebCore/platform/SourcesGStreamer.txt M Source/WebCore/platform/graphics/gstreamer/GRefPtrGStreamer.cpp M Source/WebCore/platform/graphics/gstreamer/GRefPtrGStreamer.h A Source/WebCore/platform/mediastream/gstreamer/DesktopPortal.cpp A Source/WebCore/platform/mediastream/gstreamer/DesktopPortal.h M Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp M Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCapturer.cpp M Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCapturer.h M Source/WebCore/platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.cpp M Source/WebCore/platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.h M Source/WebCore/platform/mediastream/gstreamer/GStreamerCapturer.cpp M Source/WebCore/platform/mediastream/gstreamer/GStreamerCapturer.h M Source/WebCore/platform/mediastream/gstreamer/GStreamerDisplayCaptureDeviceManager.cpp M Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp M Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCaptureSource.h M Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCapturer.cpp M Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCapturer.h A Source/WebCore/platform/mediastream/gstreamer/PipeWireCaptureDevice.h A Source/WebCore/platform/mediastream/gstreamer/PipeWireCaptureDeviceManager.cpp A Source/WebCore/platform/mediastream/gstreamer/PipeWireCaptureDeviceManager.h A Source/WebCore/platform/mediastream/gstreamer/PipeWireNodeData.h M Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp Log Message: ----------- [GStreamer][MediaStream] video capture source for Camera portal https://bugs.webkit.org/show_bug.cgi?id=244004 Reviewed by Xabier Rodriguez-Calvar. When available on a desktop host, WebKitGTK can now leverage the XDG desktop portal for Camera access so no specific sandbox exception is required. After successful communication through the portal, the WebProcess receives a FD pointing to the PipeWire session created by the portal. To expose the device we then create a GStreamer pipewiredeviceprovider and pass the fd to it. * Source/WebCore/platform/SourcesGStreamer.txt: * Source/WebCore/platform/graphics/gstreamer/GRefPtrGStreamer.cpp: (WTF::adoptGRef): (WTF::refGPtr<GstDeviceProvider>): (WTF::derefGPtr<GstDeviceProvider>): * Source/WebCore/platform/graphics/gstreamer/GRefPtrGStreamer.h: * Source/WebCore/platform/mediastream/gstreamer/DesktopPortal.cpp: Added. (WebCore::createDBusProxy): (WebCore::DesktopPortalCamera::create): (WebCore::DesktopPortalCamera::DesktopPortalCamera): (WebCore::DesktopPortalScreenCast::create): (WebCore::DesktopPortalScreenCast::DesktopPortalScreenCast): (WebCore::DesktopPortal::DesktopPortal): (WebCore::DesktopPortal::getProperty): (WebCore::DesktopPortal::waitResponseSignal): (WebCore::DesktopPortalCamera::isCameraPresent): (WebCore::DesktopPortalCamera::accessCamera): (WebCore::DesktopPortalCamera::openCameraPipewireRemote): (WebCore::DesktopPortalScreenCast::createScreencastSession): (WebCore::DesktopPortalScreenCast::closeSession): (WebCore::DesktopPortalScreenCast::ScreencastSession::selectSources): (WebCore::DesktopPortalScreenCast::ScreencastSession::start): (WebCore::DesktopPortalScreenCast::ScreencastSession::openPipewireRemote): * Source/WebCore/platform/mediastream/gstreamer/DesktopPortal.h: Added. (WebCore::DesktopPortal::waitResponseSignal): (WebCore::DesktopPortal::notifyResponse): (WebCore::DesktopPortalScreenCast::ScreencastSession::ScreencastSession): (WebCore::DesktopPortalScreenCast::ScreencastSession::path const): * Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp: * Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCapturer.cpp: (WebCore::GStreamerAudioCapturer::GStreamerAudioCapturer): * Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCapturer.h: * Source/WebCore/platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.cpp: (WebCore::GStreamerCaptureDeviceManager::addDevice): (WebCore::GStreamerCaptureDeviceManager::refreshCaptureDevices): * Source/WebCore/platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.h: * Source/WebCore/platform/mediastream/gstreamer/GStreamerCapturer.cpp: (WebCore::GStreamerCapturer::GStreamerCapturer): (WebCore::GStreamerCapturer::createSource): (WebCore::GStreamerCapturer::caps): * Source/WebCore/platform/mediastream/gstreamer/GStreamerCapturer.h: * Source/WebCore/platform/mediastream/gstreamer/GStreamerDisplayCaptureDeviceManager.cpp: (WebCore::GStreamerDisplayCaptureDeviceManager::createDisplayCaptureSource): (WebCore::GStreamerDisplayCaptureDeviceManager::stopSource): (WebCore::GStreamerDisplayCaptureDeviceManager::waitResponseSignal): Deleted. * Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp: (WebCore::GStreamerVideoCaptureDeviceManager::GStreamerVideoCaptureDeviceManager): (WebCore::GStreamerVideoCaptureDeviceManager::computeCaptureDevices): (WebCore::GStreamerVideoCaptureDeviceManager::createVideoCaptureSource): (WebCore::GStreamerVideoCaptureSource::createPipewireSource): (WebCore::GStreamerVideoCaptureSource::GStreamerVideoCaptureSource): (WebCore::m_capturer): (WebCore::GStreamerVideoCaptureSource::settingsDidChange): * Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCaptureSource.h: * Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCapturer.cpp: (WebCore::GStreamerVideoCapturer::GStreamerVideoCapturer): (WebCore::GStreamerVideoCapturer::isCapturingDisplay const): (WebCore::GStreamerVideoCapturer::setupPipeline): (WebCore::GStreamerVideoCapturer::setSize): (WebCore::GStreamerVideoCapturer::reconfigure): (WebCore::GStreamerVideoCapturer::createSource): Deleted. * Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCapturer.h: * Source/WebCore/platform/mediastream/gstreamer/PipeWireCaptureDevice.h: Copied from Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCapturer.h. (WebCore::PipeWireCaptureDevice::PipeWireCaptureDevice): (WebCore::PipeWireCaptureDevice::objectId const): (WebCore::PipeWireCaptureDevice::fd const): (WebCore::PipeWireCaptureDevice::caps const): * Source/WebCore/platform/mediastream/gstreamer/PipeWireCaptureDeviceManager.cpp: Added. (WebCore::PipeWireCaptureDeviceManager::create): (WebCore::PipeWireCaptureDeviceManager::PipeWireCaptureDeviceManager): (WebCore::PipeWireCaptureDeviceManager::computeCaptureDevices): (WebCore::PipeWireCaptureDeviceManager::createCaptureSource): * Source/WebCore/platform/mediastream/gstreamer/PipeWireCaptureDeviceManager.h: Added. (WebCore::PipeWireCaptureDeviceManager::captureDevices const): * Source/WebCore/platform/mediastream/gstreamer/PipeWireNodeData.h: Copied from Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCapturer.h. (WebCore::PipeWireNodeData::PipeWireNodeData): * Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp: (WebKit::bubblewrapSpawn): Canonical link: https://commits.webkit.org/292932@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes