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

Reply via email to