Calling sender.replaceTrack() twice produces a new transceiver and its corresponding...
authoryouenn@apple.com <youenn@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 7 Nov 2018 03:23:59 +0000 (03:23 +0000)
committeryouenn@apple.com <youenn@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 7 Nov 2018 03:23:59 +0000 (03:23 +0000)
commit5c7ff01c10ad822b5d85a5ed3453b4bcf01b7c61
treed8ddaf75462592c0bb6b1226158e647cd8452e9a
parentb3a3614977b10a588c3224b1f8d020ed03111965
Calling sender.replaceTrack() twice produces a new transceiver and its corresponding m= section
https://bugs.webkit.org/show_bug.cgi?id=191261

Reviewed by Eric Carlson.

Source/WebCore:

Handle the case of replacing a track in a sender that has no track.
In particular, do not create a new m-section as was implied by plan B implementation.
Instead, set the track directly on the rtc sender.
Covered by webrtc/video-addTransceiver.html.

* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
(WebCore::LibWebRTCMediaEndpoint::createSourceAndRTCTrack):
(WebCore::LibWebRTCMediaEndpoint::addTransceiver):
(WebCore::LibWebRTCMediaEndpoint::setSenderSourceFromTrack):
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
* Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
(WebCore::LibWebRTCPeerConnectionBackend::setSenderSourceFromTrack):
* Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.h:
* Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp:
(WebCore::LibWebRTCRtpSenderBackend::replaceTrack):

LayoutTests:

* webrtc/video-addTransceiver-expected.txt:
* webrtc/video-addTransceiver.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@237910 268f45cc-cd09-0410-ab3c-d52691b4dbfc
LayoutTests/ChangeLog
LayoutTests/webrtc/video-addTransceiver-expected.txt
LayoutTests/webrtc/video-addTransceiver.html
Source/WebCore/ChangeLog
Source/WebCore/Modules/mediastream/RTCRtpSender.cpp
Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp
Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h
Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp
Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.h
Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp