[webkit-changes] [WebKit/WebKit] 5bd55e: [GStreamer][WebRTC] replaceTrack support

Philippe Normand noreply at github.com
Fri Feb 24 14:00:44 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 5bd55e4bf534024c800d3823cde87ba2139cb3ff
      https://github.com/WebKit/WebKit/commit/5bd55e4bf534024c800d3823cde87ba2139cb3ff
  Author: Philippe Normand <philn at igalia.com>
  Date:   2023-02-24 (Fri, 24 Feb 2023)

  Changed paths:
    M LayoutTests/platform/glib/TestExpectations
    M LayoutTests/webrtc/video-replace-track.html
    M Source/WebCore/Modules/mediastream/RTCRtpTransceiverBackend.h
    M Source/WebCore/Modules/mediastream/gstreamer/GStreamerMediaEndpoint.cpp
    M Source/WebCore/Modules/mediastream/gstreamer/GStreamerMediaEndpoint.h
    M Source/WebCore/Modules/mediastream/gstreamer/GStreamerPeerConnectionBackend.cpp
    M Source/WebCore/Modules/mediastream/gstreamer/GStreamerPeerConnectionBackend.h
    M Source/WebCore/Modules/mediastream/gstreamer/GStreamerRtpSenderBackend.cpp
    M Source/WebCore/Modules/mediastream/gstreamer/GStreamerRtpSenderBackend.h
    M Source/WebCore/Modules/mediastream/gstreamer/GStreamerRtpTransceiverBackend.cpp
    M Source/WebCore/Modules/mediastream/gstreamer/GStreamerRtpTransceiverBackend.h
    M Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingAudioSourceGStreamer.cpp
    M Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingAudioSourceGStreamer.h
    M Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingMediaSourceGStreamer.cpp
    M Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingMediaSourceGStreamer.h
    M Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingVideoSourceGStreamer.cpp
    M Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingVideoSourceGStreamer.h

  Log Message:
  -----------
  [GStreamer][WebRTC] replaceTrack support
https://bugs.webkit.org/show_bug.cgi?id=252820

Reviewed by Xabier Rodriguez-Calvar.

In the GStreamer WebRTC backend `sender.replaceTrack()` is now supported. Under the hood, the
outgoing media source now has an input-selector just after the mediastreamsrc element. This allows
us to toggle between a mediastreamsrc and a fake source, eg, when replacing the track with null.

* LayoutTests/platform/glib/TestExpectations:
* LayoutTests/webrtc/video-replace-track.html:
* Source/WebCore/Modules/mediastream/RTCRtpTransceiverBackend.h:
* Source/WebCore/Modules/mediastream/gstreamer/GStreamerMediaEndpoint.cpp:
(WebCore::GStreamerMediaEndpoint::setConfiguration):
(WebCore::GStreamerMediaEndpoint::configureAndLinkSource):
(WebCore::GStreamerMediaEndpoint::requestPad):
(WebCore::GStreamerMediaEndpoint::addTrack):
(WebCore::GStreamerMediaEndpoint::removeTrack):
(WebCore::GStreamerMediaEndpoint::addTransceiver):
(WebCore::GStreamerMediaEndpoint::createLinkedSourceForTrack):
(WebCore::GStreamerMediaEndpoint::createDataChannel):
(WebCore::GStreamerMediaEndpoint::onNegotiationNeeded):
(WebCore::GStreamerMediaEndpoint::setSenderSourceFromTrack): Deleted.
* Source/WebCore/Modules/mediastream/gstreamer/GStreamerMediaEndpoint.h:
* Source/WebCore/Modules/mediastream/gstreamer/GStreamerPeerConnectionBackend.cpp:
(WebCore::GStreamerPeerConnectionBackend::createLinkedSourceForTrack):
(WebCore::GStreamerPeerConnectionBackend::setSenderSourceFromTrack): Deleted.
* Source/WebCore/Modules/mediastream/gstreamer/GStreamerPeerConnectionBackend.h:
* Source/WebCore/Modules/mediastream/gstreamer/GStreamerRtpSenderBackend.cpp:
(WebCore::ensureDebugCategoryIsRegistered):
(WebCore::GStreamerRtpSenderBackend::GStreamerRtpSenderBackend):
(WebCore::m_initData):
(WebCore::GStreamerRtpSenderBackend::startSource):
(WebCore::GStreamerRtpSenderBackend::stopSource):
(WebCore::GStreamerRtpSenderBackend::replaceTrack):
* Source/WebCore/Modules/mediastream/gstreamer/GStreamerRtpSenderBackend.h:
* Source/WebCore/Modules/mediastream/gstreamer/GStreamerRtpTransceiverBackend.cpp:
(WebCore::GStreamerRtpTransceiverBackend::stop):
(WebCore::GStreamerRtpTransceiverBackend::stopped const):
* Source/WebCore/Modules/mediastream/gstreamer/GStreamerRtpTransceiverBackend.h:
* Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingAudioSourceGStreamer.cpp:
(WebCore::RealtimeOutgoingAudioSourceGStreamer::setPayloadType):
(WebCore::RealtimeOutgoingAudioSourceGStreamer::codecPreferencesChanged):
(WebCore::RealtimeOutgoingAudioSourceGStreamer::connectFallbackSource):
(WebCore::RealtimeOutgoingAudioSourceGStreamer::unlinkOutgoingSource):
(WebCore::RealtimeOutgoingAudioSourceGStreamer::linkOutgoingSource):
* Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingAudioSourceGStreamer.h:
* Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingMediaSourceGStreamer.cpp:
(WebCore::RealtimeOutgoingMediaSourceGStreamer::RealtimeOutgoingMediaSourceGStreamer):
(WebCore::RealtimeOutgoingMediaSourceGStreamer::~RealtimeOutgoingMediaSourceGStreamer):
(WebCore::RealtimeOutgoingMediaSourceGStreamer::setSource):
(WebCore::RealtimeOutgoingMediaSourceGStreamer::start):
(WebCore::RealtimeOutgoingMediaSourceGStreamer::stop):
(WebCore::RealtimeOutgoingMediaSourceGStreamer::flush):
(WebCore::RealtimeOutgoingMediaSourceGStreamer::stopOutgoingSource):
(WebCore::RealtimeOutgoingMediaSourceGStreamer::initializeFromTrack):
* Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingMediaSourceGStreamer.h:
(WebCore::RealtimeOutgoingMediaSourceGStreamer::isStopped const):
(WebCore::RealtimeOutgoingMediaSourceGStreamer::connectFallbackSource):
(WebCore::RealtimeOutgoingMediaSourceGStreamer::unlinkOutgoingSource):
(WebCore::RealtimeOutgoingMediaSourceGStreamer::linkOutgoingSource):
* Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingVideoSourceGStreamer.cpp:
(WebCore::RealtimeOutgoingVideoSourceGStreamer::setPayloadType):
(WebCore::RealtimeOutgoingVideoSourceGStreamer::codecPreferencesChanged):
(WebCore::RealtimeOutgoingVideoSourceGStreamer::connectFallbackSource):
(WebCore::RealtimeOutgoingVideoSourceGStreamer::unlinkOutgoingSource):
(WebCore::RealtimeOutgoingVideoSourceGStreamer::linkOutgoingSource):
(WebCore::RealtimeOutgoingVideoSourceGStreamer::flush):
* Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingVideoSourceGStreamer.h:

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




More information about the webkit-changes mailing list