Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 5bd55e4bf534024c800d3823cde87ba2139cb3ff https://github.com/WebKit/WebKit/commit/5bd55e4bf534024c800d3823cde87ba2139cb3ff Author: Philippe Normand <ph...@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 _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes