Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: a5509c9f1bd7777cd6762db9f5ae2538843dd09b https://github.com/WebKit/WebKit/commit/a5509c9f1bd7777cd6762db9f5ae2538843dd09b Author: Philippe Normand <ph...@igalia.com> Date: 2024-11-19 (Tue, 19 Nov 2024)
Changed paths: M LayoutTests/platform/glib/TestExpectations M LayoutTests/platform/glib/fast/mediastream/RTCPeerConnection-inspect-answer-expected.txt M LayoutTests/platform/glib/fast/mediastream/RTCPeerConnection-inspect-offer-expected.txt A LayoutTests/platform/glib/imported/w3c/web-platform-tests/webrtc/RTCRtpParameters-encodings-expected.txt M Source/WebCore/Modules/mediastream/MediaStream.cpp M Source/WebCore/Modules/mediastream/MediaStreamTrack.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/GStreamerRtpReceiverBackend.cpp M Source/WebCore/Modules/mediastream/gstreamer/GStreamerRtpReceiverBackend.h M Source/WebCore/Modules/mediastream/gstreamer/GStreamerRtpSenderBackend.cpp M Source/WebCore/Modules/mediastream/gstreamer/GStreamerRtpTransceiverBackend.cpp M Source/WebCore/Modules/mediastream/gstreamer/GStreamerStatsCollector.cpp M Source/WebCore/Modules/mediastream/gstreamer/GStreamerWebRTCUtils.cpp M Source/WebCore/Modules/mediastream/gstreamer/GStreamerWebRTCUtils.h M Source/WebCore/platform/SourcesGStreamer.txt A Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioRTPPacketizer.cpp A Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioRTPPacketizer.h M Source/WebCore/platform/mediastream/gstreamer/GStreamerIncomingTrackProcessor.cpp M Source/WebCore/platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp A Source/WebCore/platform/mediastream/gstreamer/GStreamerRTPPacketizer.cpp A Source/WebCore/platform/mediastream/gstreamer/GStreamerRTPPacketizer.h A Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoRTPPacketizer.cpp A Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoRTPPacketizer.h M Source/WebCore/platform/mediastream/gstreamer/GStreamerWebRTCCommon.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] Pipeline revamp in preparation for simulcast support https://bugs.webkit.org/show_bug.cgi?id=282926 Reviewed by Xabier Rodriguez-Calvar. Outgoing sources can now multiplex multiple RTP streams, this is going to be required for simulcast support. Encoding/payloading are now done in a separate sub-bin, managed by new GStreamer{Audio,Video}RTPPacketizer classes. Encoding RTP parameters validation support was improved as well. * LayoutTests/platform/glib/TestExpectations: * LayoutTests/platform/glib/fast/mediastream/RTCPeerConnection-inspect-answer-expected.txt: * LayoutTests/platform/glib/fast/mediastream/RTCPeerConnection-inspect-offer-expected.txt: * Source/WebCore/Modules/mediastream/MediaStream.cpp: (WebCore::MediaStream::MediaStream): * Source/WebCore/Modules/mediastream/MediaStreamTrack.h: (WebCore::MediaStreamTrack::setMediaStreamId): (WebCore::MediaStreamTrack::mediaStreamId const): * Source/WebCore/Modules/mediastream/gstreamer/GStreamerMediaEndpoint.cpp: (WebCore::GStreamerMediaEndpoint::initializePipeline): (WebCore::GStreamerMediaEndpoint::setConfiguration): (WebCore::getMediaStreamIdsFromSDPMedia): (WebCore::toGStreamerMediaEndpointTransceiverState): (WebCore::transceiverStatesFromWebRTCBin): (WebCore::GStreamerMediaEndpoint::doSetLocalDescription): (WebCore::GStreamerMediaEndpoint::doSetRemoteDescription): (WebCore::GStreamerMediaEndpoint::setDescription): (WebCore::GStreamerMediaEndpoint::processSDPMessage): (WebCore::GStreamerMediaEndpoint::configureSource): (WebCore::GStreamerMediaEndpoint::requestPad): (WebCore::GStreamerMediaEndpoint::addTrack): (WebCore::GStreamerMediaEndpoint::initiate): (WebCore::GStreamerMediaEndpoint::trackIdFromSDPMedia): (WebCore::GStreamerMediaEndpoint::connectIncomingTrack): (WebCore::GStreamerMediaEndpoint::connectPad): (WebCore::GStreamerMediaEndpoint::createTransceiverBackends): (WebCore::GStreamerMediaEndpoint::addTransceiver): (WebCore::GStreamerMediaEndpoint::createMutedSource): (WebCore::GStreamerMediaEndpoint::createSourceForTrack): (WebCore::GStreamerMediaEndpoint::close): (WebCore::GStreamerMediaEndpoint::suspend): (WebCore::GStreamerMediaEndpoint::onNegotiationNeeded): (WebCore::GStreamerMediaEndpoint::collectTransceivers): (WebCore::GStreamerMediaEndpoint::preprocessStats): (WebCore::GStreamerMediaEndpoint::configureAndLinkSource): Deleted. (WebCore::GStreamerMediaEndpoint::createLinkedSourceForTrack): Deleted. * Source/WebCore/Modules/mediastream/gstreamer/GStreamerMediaEndpoint.h: * Source/WebCore/Modules/mediastream/gstreamer/GStreamerPeerConnectionBackend.cpp: (WebCore::GStreamerPeerConnectionBackend::addTrack): (WebCore::GStreamerPeerConnectionBackend::createSourceForTrack): (WebCore::GStreamerPeerConnectionBackend::existingTransceiverForTrackId): (WebCore::GStreamerPeerConnectionBackend::createLinkedSourceForTrack): Deleted. * Source/WebCore/Modules/mediastream/gstreamer/GStreamerPeerConnectionBackend.h: * Source/WebCore/Modules/mediastream/gstreamer/GStreamerRtpReceiverBackend.cpp: (WebCore::GStreamerRtpReceiverBackend::GStreamerRtpReceiverBackend): (WebCore::GStreamerRtpReceiverBackend::getParameters): * Source/WebCore/Modules/mediastream/gstreamer/GStreamerRtpReceiverBackend.h: * Source/WebCore/Modules/mediastream/gstreamer/GStreamerRtpSenderBackend.cpp: (WebCore::m_initData): (WebCore::GStreamerRtpSenderBackend::setSource): (WebCore::GStreamerRtpSenderBackend::replaceTrack): (WebCore::GStreamerRtpSenderBackend::setParameters): * Source/WebCore/Modules/mediastream/gstreamer/GStreamerRtpTransceiverBackend.cpp: (WebCore::GStreamerRtpTransceiverBackend::GStreamerRtpTransceiverBackend): (WebCore::GStreamerRtpTransceiverBackend::createReceiverBackend): (WebCore::toRtpCodecCapability): (WebCore::GStreamerRtpTransceiverBackend::setCodecPreferences): (WebCore::getMsidFromCurrentCodecPreferences): Deleted. * Source/WebCore/Modules/mediastream/gstreamer/GStreamerStatsCollector.cpp: (WebCore::RTCStatsReport::ReceivedRtpStreamStats::ReceivedRtpStreamStats): (WebCore::RTCStatsReport::OutboundRtpStreamStats::OutboundRtpStreamStats): (WebCore::GStreamerStatsCollector::getStats): * Source/WebCore/Modules/mediastream/gstreamer/GStreamerWebRTCUtils.cpp: (WebCore::fromRTCEncodingParameters): (WebCore::toRTCEncodingParameters): (WebCore::toRTCCodecParameters): (WebCore::toRTCRtpSendParameters): (WebCore::fromRTCCodecParameters): (WebCore::fromRTCSendParameters): (WebCore::capsFromRtpCapabilities): * Source/WebCore/Modules/mediastream/gstreamer/GStreamerWebRTCUtils.h: (WebCore::webrtcKindFromCaps): * Source/WebCore/platform/SourcesGStreamer.txt: * Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioRTPPacketizer.cpp: Added. (WebCore::GStreamerAudioRTPPacketizer::create): (WebCore::GStreamerAudioRTPPacketizer::GStreamerAudioRTPPacketizer): * Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioRTPPacketizer.h: Copied from Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingAudioSourceGStreamer.h. * Source/WebCore/platform/mediastream/gstreamer/GStreamerIncomingTrackProcessor.cpp: (WebCore::GStreamerIncomingTrackProcessor::configure): (WebCore::GStreamerIncomingTrackProcessor::trackReady): * Source/WebCore/platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp: * Source/WebCore/platform/mediastream/gstreamer/GStreamerRTPPacketizer.cpp: Added. (WebCore::GStreamerRTPPacketizer::GStreamerRTPPacketizer): (WebCore::GStreamerRTPPacketizer::configureExtensions): (WebCore::GStreamerRTPPacketizer::ensureMidExtension): (WebCore::GStreamerRTPPacketizer::rtpParameters const): (WebCore::GStreamerRTPPacketizer::rtpStreamId const): (WebCore::GStreamerRTPPacketizer::payloadType const): (WebCore::GStreamerRTPPacketizer::currentSequenceNumberOffset const): (WebCore::GStreamerRTPPacketizer::setSequenceNumberOffset): (WebCore::GStreamerRTPPacketizer::findLastExtensionId): (WebCore::GStreamerRTPPacketizer::stats const): (WebCore::GStreamerRTPPacketizer::startUpdatingStats): (WebCore::GStreamerRTPPacketizer::updateStatsFromRTPExtensions): (WebCore::GStreamerRTPPacketizer::stopUpdatingStats): (WebCore::GStreamerRTPPacketizer::applyEncodingParameters const): (WebCore::GStreamerRTPPacketizer::reconfigure): * Source/WebCore/platform/mediastream/gstreamer/GStreamerRTPPacketizer.h: Added. (WebCore::GStreamerRTPPacketizer::bin const): (WebCore::GStreamerRTPPacketizer::payloader const): (WebCore::GStreamerRTPPacketizer::updateStats): (WebCore::GStreamerRTPPacketizer::configure const): * Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoRTPPacketizer.cpp: Added. (WebCore::GStreamerVideoRTPPacketizer::create): (WebCore::GStreamerVideoRTPPacketizer::GStreamerVideoRTPPacketizer): (WebCore::GStreamerVideoRTPPacketizer::configure const): (WebCore::GStreamerVideoRTPPacketizer::updateStats): * Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoRTPPacketizer.h: Copied from Source/WebCore/platform/mediastream/gstreamer/GStreamerWebRTCCommon.h. * Source/WebCore/platform/mediastream/gstreamer/GStreamerWebRTCCommon.h: * Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingAudioSourceGStreamer.cpp: (WebCore::RealtimeOutgoingAudioSourceGStreamer::RealtimeOutgoingAudioSourceGStreamer): (WebCore::RealtimeOutgoingAudioSourceGStreamer::initialize): (WebCore::RealtimeOutgoingAudioSourceGStreamer::linkTee): (WebCore::RealtimeOutgoingAudioSourceGStreamer::outgoingSourcePad const): (WebCore::RealtimeOutgoingAudioSourceGStreamer::createPacketizer): (WebCore::RealtimeOutgoingAudioSourceGStreamer::setPayloadType): Deleted. (WebCore::RealtimeOutgoingAudioSourceGStreamer::setParameters): Deleted. (WebCore::RealtimeOutgoingAudioSourceGStreamer::teardown): Deleted. * Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingAudioSourceGStreamer.h: * Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingMediaSourceGStreamer.cpp: (WebCore::RealtimeOutgoingMediaSourceGStreamer::RealtimeOutgoingMediaSourceGStreamer): (WebCore::RealtimeOutgoingMediaSourceGStreamer::~RealtimeOutgoingMediaSourceGStreamer): (WebCore::RealtimeOutgoingMediaSourceGStreamer::initialize): (WebCore::RealtimeOutgoingMediaSourceGStreamer::allowedCaps const): (WebCore::RealtimeOutgoingMediaSourceGStreamer::rtpCaps const): (WebCore::RealtimeOutgoingMediaSourceGStreamer::start): (WebCore::RealtimeOutgoingMediaSourceGStreamer::stopOutgoingSource): (WebCore::RealtimeOutgoingMediaSourceGStreamer::sourceEnabledChanged): (WebCore::RealtimeOutgoingMediaSourceGStreamer::initializeSourceFromTrackPrivate): (WebCore::RealtimeOutgoingMediaSourceGStreamer::link): (WebCore::RealtimeOutgoingMediaSourceGStreamer::setSinkPad): (WebCore::RealtimeOutgoingMediaSourceGStreamer::checkMid): (WebCore::RealtimeOutgoingMediaSourceGStreamer::parameters): (WebCore::RealtimeOutgoingMediaSourceGStreamer::codecPreferencesChanged): (WebCore::RealtimeOutgoingMediaSourceGStreamer::replaceTrack): (WebCore::RealtimeOutgoingMediaSourceGStreamer::setInitialParameters): (WebCore::RealtimeOutgoingMediaSourceGStreamer::configure): (WebCore::RealtimeOutgoingMediaSourceGStreamer::setParameters): (WebCore::RealtimeOutgoingMediaSourceGStreamer::getPacketizerForRid): (WebCore::RealtimeOutgoingMediaSourceGStreamer::linkPacketizer): (WebCore::RealtimeOutgoingMediaSourceGStreamer::configurePacketizers): (WebCore::RealtimeOutgoingMediaSourceGStreamer::lookupRtpExtensions): (WebCore::RealtimeOutgoingMediaSourceGStreamer::stats): (WebCore::RealtimeOutgoingMediaSourceGStreamer::startUpdatingStats): (WebCore::RealtimeOutgoingMediaSourceGStreamer::stopUpdatingStats): (WebCore::RealtimeOutgoingMediaSourceGStreamer::teardown): (WebCore::RealtimeOutgoingMediaSourceGStreamer::flush): Deleted. (WebCore::RealtimeOutgoingMediaSourceGStreamer::initializeFromTrack): Deleted. (WebCore::RealtimeOutgoingMediaSourceGStreamer::unlinkPayloader): Deleted. * Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingMediaSourceGStreamer.h: (WebCore::RealtimeOutgoingMediaSourceGStreamer::setPayloadType): Deleted. (WebCore::RealtimeOutgoingMediaSourceGStreamer::fillEncodingParameters): Deleted. (WebCore::RealtimeOutgoingMediaSourceGStreamer::setParameters): Deleted. * Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingVideoSourceGStreamer.cpp: (WebCore::RealtimeOutgoingVideoSourceGStreamer::RealtimeOutgoingVideoSourceGStreamer): (WebCore::RealtimeOutgoingVideoSourceGStreamer::initializePreProcessor): (WebCore::RealtimeOutgoingVideoSourceGStreamer::teardown): (WebCore::RealtimeOutgoingVideoSourceGStreamer::rtpCapabilities const): (WebCore::RealtimeOutgoingVideoSourceGStreamer::linkTee): (WebCore::RealtimeOutgoingVideoSourceGStreamer::outgoingSourcePad const): (WebCore::RealtimeOutgoingVideoSourceGStreamer::createPacketizer): (WebCore::RealtimeOutgoingVideoSourceGStreamer::updateStats): Deleted. (WebCore::RealtimeOutgoingVideoSourceGStreamer::setPayloadType): Deleted. (WebCore::RealtimeOutgoingVideoSourceGStreamer::startUpdatingStats): Deleted. (WebCore::RealtimeOutgoingVideoSourceGStreamer::stopUpdatingStats): Deleted. (WebCore::RealtimeOutgoingVideoSourceGStreamer::sourceEnabledChanged): Deleted. (WebCore::RealtimeOutgoingVideoSourceGStreamer::flush): Deleted. (WebCore::RealtimeOutgoingVideoSourceGStreamer::setParameters): Deleted. (WebCore::RealtimeOutgoingVideoSourceGStreamer::fillEncodingParameters): Deleted. * Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingVideoSourceGStreamer.h: Canonical link: https://commits.webkit.org/286800@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