[webkit-changes] [WebKit/WebKit] 70b217: [GStreamer][MediaStream] Basic support for track c...
Philippe Normand
noreply at github.com
Wed Feb 26 06:38:06 PST 2025
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 70b217d22d3a08d4eec2767e2029cf3d673fc97d
https://github.com/WebKit/WebKit/commit/70b217d22d3a08d4eec2767e2029cf3d673fc97d
Author: Philippe Normand <philn at igalia.com>
Date: 2025-02-26 (Wed, 26 Feb 2025)
Changed paths:
M LayoutTests/platform/glib/TestExpectations
M Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp
M Source/WebCore/platform/mediastream/RealtimeMediaSource.h
M Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp
M Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCaptureSource.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/GStreamerMockDevice.cpp
M Source/WebCore/platform/mediastream/gstreamer/GStreamerMockDeviceProvider.cpp
M Source/WebCore/platform/mediastream/gstreamer/GStreamerMockDeviceProvider.h
M Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp
M Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCaptureSource.h
M Source/WebCore/platform/mediastream/gstreamer/MockRealtimeAudioSourceGStreamer.cpp
M Source/WebCore/platform/mediastream/gstreamer/MockRealtimeAudioSourceGStreamer.h
M Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.h
M Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm
M Source/WebCore/platform/mock/MockMediaDevice.h
M Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.cpp
M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in
M Source/WebKit/UIProcess/API/C/WKMockMediaDevice.cpp
M Source/WebKit/UIProcess/API/C/WKPage.cpp
M Source/WebKit/UIProcess/WebPageProxy.cpp
M Source/WebKit/UIProcess/WebPageProxy.h
M Source/WebKit/WebProcess/WebPage/WebPage.cpp
M Source/WebKit/WebProcess/WebPage/WebPage.h
M Source/WebKit/WebProcess/WebPage/WebPage.messages.in
M Source/WebKit/WebProcess/cocoa/RemoteRealtimeMediaSource.cpp
M Source/WebKit/WebProcess/cocoa/RemoteRealtimeMediaSource.h
Log Message:
-----------
[GStreamer][MediaStream] Basic support for track configurationchange events
https://bugs.webkit.org/show_bug.cgi?id=288466
Reviewed by Xabier Rodriguez-Calvar.
If we are capturing a default microphone or camera and the user changes the default device in the OS
session settings, we should keep capture the new default device. This is now supported, excepted for
screen capture. The GstDeviceProvider emits device-changed messages on the bus, so by monitoring
those we can propagate changes in the CaptureDeviceManager and notify observing RealtimeMediaSources
which then notify the MediaStreamTrackPrivate which relays the notification to the MediaStreamTrack
which emits the configurationchange event. On the GStreamer capturer side, when the default device
changes the pipeline is partly teared down and a new one is spun up, using the new GstDevice.
* LayoutTests/platform/glib/TestExpectations:
* Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp:
(WebCore::RealtimeMediaSource::configurationChanged):
* Source/WebCore/platform/mediastream/RealtimeMediaSource.h:
* Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp:
(WebCore::GStreamerAudioCaptureSource::captureDeviceUpdated):
* Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCaptureSource.h:
* Source/WebCore/platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.cpp:
(WebCore::GStreamerCaptureDeviceManager::captureDeviceFromGstDevice):
(WebCore::GStreamerCaptureDeviceManager::addDevice):
(WebCore::GStreamerCaptureDeviceManager::removeDevice):
(WebCore::GStreamerCaptureDeviceManager::updateDevice):
(WebCore::GStreamerCaptureDeviceManager::refreshCaptureDevices):
* Source/WebCore/platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.h:
* Source/WebCore/platform/mediastream/gstreamer/GStreamerCapturer.cpp:
(WebCore::GStreamerCapturer::tearDown):
(WebCore::GStreamerCapturer::setDevice):
(WebCore::GStreamerCapturer::setupPipeline):
* Source/WebCore/platform/mediastream/gstreamer/GStreamerCapturer.h:
(WebCore::GStreamerCapturerObserver::captureDeviceUpdated):
* Source/WebCore/platform/mediastream/gstreamer/GStreamerMockDevice.cpp:
(webkitMockDeviceCreate):
* Source/WebCore/platform/mediastream/gstreamer/GStreamerMockDeviceProvider.cpp:
(webkitMockDeviceProviderProbe):
(webkitGstMockDeviceProviderSingleton):
(findDeviceWithID):
(webkitGstMockDeviceProviderSwitchDefaultDevice):
(webkitMockDeviceProviderConstructed):
(webkitMockDeviceProviderFinalize):
(webkit_mock_device_provider_class_init):
* Source/WebCore/platform/mediastream/gstreamer/GStreamerMockDeviceProvider.h:
* Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:
(WebCore::GStreamerVideoCaptureSource::captureDeviceUpdated):
(WebCore::GStreamerVideoCaptureSource::configurationChanged):
* Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCaptureSource.h:
* Source/WebCore/platform/mediastream/gstreamer/MockRealtimeAudioSourceGStreamer.cpp:
(WebCore::MockRealtimeAudioSourceGStreamer::captureDeviceUpdated):
* Source/WebCore/platform/mediastream/gstreamer/MockRealtimeAudioSourceGStreamer.h:
* Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.h:
* Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm:
(WebCore::AVVideoCaptureSource::configurationChanged):
* Source/WebCore/platform/mock/MockMediaDevice.h:
(WebCore::MockMediaDevice::captureDevice const):
* Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.cpp:
(WebCore::defaultDevices):
(WebCore::MockRealtimeMediaSourceCenter::triggerMockCaptureConfigurationChange):
* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:
* Source/WebKit/UIProcess/API/C/WKMockMediaDevice.cpp:
(WKAddMockMediaDevice):
* Source/WebKit/UIProcess/API/C/WKPage.cpp:
(WKPageTriggerMockCaptureConfigurationChange):
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::triggerMockCaptureConfigurationChange):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::triggerMockCaptureConfigurationChange):
* Source/WebKit/WebProcess/WebPage/WebPage.h:
* Source/WebKit/WebProcess/WebPage/WebPage.messages.in:
Canonical link: https://commits.webkit.org/291112@main
To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications
More information about the webkit-changes
mailing list