[webkit-changes] [WebKit/WebKit] 79141a: [GStreamer][MediaStream] Leverage GStreamerCapture...

Philippe Normand noreply at github.com
Fri Jun 16 10:14:08 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 79141ab69a81e754ecc39b8f4f7ab87279401404
      https://github.com/WebKit/WebKit/commit/79141ab69a81e754ecc39b8f4f7ab87279401404
  Author: Philippe Normand <philn at igalia.com>
  Date:   2023-06-16 (Fri, 16 Jun 2023)

  Changed paths:
    M LayoutTests/fast/mediastream/device-change-event-2.html
    M Source/WebCore/platform/SourcesGStreamer.txt
    M Source/WebCore/platform/graphics/gstreamer/GRefPtrGStreamer.cpp
    M Source/WebCore/platform/graphics/gstreamer/GRefPtrGStreamer.h
    M Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.cpp
    M Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp
    M Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCaptureSource.h
    M Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCapturer.cpp
    M Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCapturer.h
    M Source/WebCore/platform/mediastream/gstreamer/GStreamerCaptureDevice.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
    A Source/WebCore/platform/mediastream/gstreamer/GStreamerMockDevice.cpp
    A Source/WebCore/platform/mediastream/gstreamer/GStreamerMockDevice.h
    A Source/WebCore/platform/mediastream/gstreamer/GStreamerMockDeviceProvider.cpp
    A 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/GStreamerVideoCapturer.cpp
    M Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCapturer.h
    M Source/WebCore/platform/mediastream/gstreamer/MockRealtimeAudioSourceGStreamer.cpp
    M Source/WebCore/platform/mediastream/gstreamer/MockRealtimeAudioSourceGStreamer.h
    M Source/WebCore/platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.cpp
    M Source/WebCore/platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.h
    M Source/WebCore/platform/mock/MockRealtimeAudioSource.h
    M Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.cpp
    M Source/WebCore/platform/mock/MockRealtimeVideoSource.h
    M Tools/Scripts/webkitpy/style/checker.py

  Log Message:
  -----------
  [GStreamer][MediaStream] Leverage GStreamerCapturer on mock sources
https://bugs.webkit.org/show_bug.cgi?id=244003

Reviewed by Xabier Rodriguez-Calvar.

The GStreamer mock audio and video sources now feed a capturer pipeline, in order to have a similar
behaviour to the non-mock sources. In order to make this possible, we now have a new
GstDeviceProvider that creates a GstDevice for each mock device of the mock realtime media source
center. Each mock device is associated with an appsrc element, to which mock GstSamples are pushed.

* LayoutTests/fast/mediastream/device-change-event-2.html:
* Source/WebCore/platform/SourcesGStreamer.txt:
* Source/WebCore/platform/graphics/gstreamer/GRefPtrGStreamer.cpp:
(WTF::adoptGRef):
(WTF::refGPtr<GstDevice>):
(WTF::derefGPtr<GstDevice>):
* Source/WebCore/platform/graphics/gstreamer/GRefPtrGStreamer.h:
* Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.cpp:
(WebCore::RealtimeMediaSourceCenter::captureDevicesChanged):
* Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp:
(WebCore::GStreamerAudioCaptureSource::GStreamerAudioCaptureSource):
(WebCore::GStreamerAudioCaptureSource::startProducingData):
(WebCore::GStreamerAudioCaptureSource::stopProducingData):
(WebCore::GStreamerAudioCaptureSource::newSampleCallback): Deleted.
* Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCaptureSource.h:
* Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCapturer.cpp:
(WebCore::GStreamerAudioCapturer::GStreamerAudioCapturer):
(WebCore::GStreamerAudioCapturer::~GStreamerAudioCapturer):
(WebCore::GStreamerAudioCapturer::setSinkAudioCallback):
(WebCore::GStreamerAudioCapturer::createConverter):
* Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCapturer.h:
* Source/WebCore/platform/mediastream/gstreamer/GStreamerCaptureDevice.h:
(WebCore::GStreamerCaptureDevice::GStreamerCaptureDevice):
* Source/WebCore/platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.cpp:
(WebCore::GStreamerCaptureDeviceManager::GStreamerCaptureDeviceManager):
(WebCore::GStreamerCaptureDeviceManager::~GStreamerCaptureDeviceManager):
(WebCore::GStreamerCaptureDeviceManager::stopMonitor):
(WebCore::GStreamerCaptureDeviceManager::devicesChanged):
(WebCore::GStreamerCaptureDeviceManager::gstreamerDeviceWithUID):
(WebCore::GStreamerCaptureDeviceManager::captureDevices):
(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):
(WebCore::GStreamerCapturer::setupPipeline):
(WebCore::GStreamerCapturer::start):
(WebCore::GStreamerCapturer::stop):
(WebCore::GStreamerCapturer::play): Deleted.
* Source/WebCore/platform/mediastream/gstreamer/GStreamerCapturer.h:
* Source/WebCore/platform/mediastream/gstreamer/GStreamerMockDevice.cpp: Added.
(webkitMockDeviceCreateElement):
(webkit_mock_device_class_init):
(webkitMockDeviceCreate):
* Source/WebCore/platform/mediastream/gstreamer/GStreamerMockDevice.h: Added.
* Source/WebCore/platform/mediastream/gstreamer/GStreamerMockDeviceProvider.cpp: Added.
(webkitMockDeviceProviderProbe):
(webkit_mock_device_provider_class_init):
* Source/WebCore/platform/mediastream/gstreamer/GStreamerMockDeviceProvider.h: Added.
* Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:
(WebCore::GStreamerVideoCaptureSource::~GStreamerVideoCaptureSource):
(WebCore::GStreamerVideoCaptureSource::startProducingData):
(WebCore::GStreamerVideoCaptureSource::processNewFrame): Deleted.
(WebCore::GStreamerVideoCaptureSource::newSampleCallback): Deleted.
* Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCaptureSource.h:
(WebCore::GStreamerVideoCaptureSource::capturer):
* Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCapturer.cpp:
(WebCore::GStreamerVideoCapturer::GStreamerVideoCapturer):
(WebCore::GStreamerVideoCapturer::~GStreamerVideoCapturer):
(WebCore::GStreamerVideoCapturer::setSinkVideoFrameCallback):
(WebCore::GStreamerVideoCapturer::getBestFormat):
(WebCore::GStreamerVideoCapturer::reconfigure):
* Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCapturer.h:
* Source/WebCore/platform/mediastream/gstreamer/MockRealtimeAudioSourceGStreamer.cpp:
(WebCore::MockRealtimeAudioSourceGStreamer::startProducingData):
(WebCore::MockRealtimeAudioSourceGStreamer::stopProducingData):
(WebCore::MockRealtimeAudioSourceGStreamer::render):
(WebCore::MockRealtimeAudioSourceGStreamer::reconfigure):
* Source/WebCore/platform/mediastream/gstreamer/MockRealtimeAudioSourceGStreamer.h:
* Source/WebCore/platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.cpp:
(WebCore::MockRealtimeVideoSourceGStreamer::startProducingData):
(WebCore::MockRealtimeVideoSourceGStreamer::stopProducingData):
(WebCore::MockRealtimeVideoSourceGStreamer::updateSampleBuffer):
* Source/WebCore/platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.h:
* Source/WebCore/platform/mock/MockRealtimeAudioSource.h:
* Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.cpp:
(WebCore::MockRealtimeMediaSourceCenter::displayDevices):
* Source/WebCore/platform/mock/MockRealtimeVideoSource.h:

Canonical link: https://commits.webkit.org/265250@main




More information about the webkit-changes mailing list