Changeset 238680 in webkit


Ignore:
Timestamp:
Nov 29, 2018 11:54:40 AM (5 years ago)
Author:
youenn@apple.com
Message:

A sender created through addTransceiver and populated using addTrack should have its source set
https://bugs.webkit.org/show_bug.cgi?id=192136

Reviewed by Eric Carlson.

Source/WebCore:

In case libwebrtc backend is already created, we need to make sure to
set the track source to the libwebrtc sender backend that is actually
tied to the sender.

Covered by updated test.

  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:

(WebCore::LibWebRTCPeerConnectionBackend::addTrack):

  • Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h:

LayoutTests:

  • webrtc/video-replace-track-expected.txt:
  • webrtc/video-replace-track.html:
Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r238679 r238680  
     12018-11-29  Youenn Fablet  <youenn@apple.com>
     2
     3        A sender created through addTransceiver and populated using addTrack should have its source set
     4        https://bugs.webkit.org/show_bug.cgi?id=192136
     5
     6        Reviewed by Eric Carlson.
     7
     8        * webrtc/video-replace-track-expected.txt:
     9        * webrtc/video-replace-track.html:
     10
    1112018-11-29  Ryan Haddad  <ryanhaddad@apple.com>
    212
  • trunk/LayoutTests/webrtc/video-replace-track-expected.txt

    r222273 r238680  
    33PASS Switching from front to back camera, with lower resolution
    44PASS Switching from front to back camera, with higher resolution
     5PASS Replace a track for a sender created by addTransceiver and used by addTrack
    56
  • trunk/LayoutTests/webrtc/video-replace-track.html

    r229644 r238680  
    182182
    183183}, "Switching from front to back camera, with higher resolution");
     184
     185promise_test(async (test) => {
     186    const stream = await navigator.mediaDevices.getUserMedia({ video: true });
     187    const pc = new RTCPeerConnection();
     188    pc.addTransceiver("video", {direction: "sendonly"});
     189    const sender = pc.addTrack(stream.getVideoTracks()[0], stream);
     190    await sender.replaceTrack(stream.getVideoTracks()[0].clone());
     191}, "Replace a track for a sender created by addTransceiver and used by addTrack");
    184192        </script>
    185193    </body>
  • trunk/Source/WebCore/ChangeLog

    r238678 r238680  
     12018-11-29  Youenn Fablet  <youenn@apple.com>
     2
     3        A sender created through addTransceiver and populated using addTrack should have its source set
     4        https://bugs.webkit.org/show_bug.cgi?id=192136
     5
     6        Reviewed by Eric Carlson.
     7
     8        In case libwebrtc backend is already created, we need to make sure to
     9        set the track source to the libwebrtc sender backend that is actually
     10        tied to the sender.
     11
     12        Covered by updated test.
     13
     14        * Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
     15        (WebCore::LibWebRTCPeerConnectionBackend::addTrack):
     16        * Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h:
     17
    1182018-11-29  Megan Gardner  <megan_gardner@apple.com>
    219
  • trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp

    r238150 r238680  
    404404
    405405        if (auto sender = findExistingSender(m_peerConnection.currentSenders(), *senderBackend)) {
     406            backendFromRTPSender(*sender).takeSource(*senderBackend);
    406407            sender->setTrack(makeRef(track));
    407408            sender->setMediaStreamIds(WTFMove(mediaStreamIds));
  • trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h

    r235973 r238680  
    9595    }
    9696
     97    void takeSource(LibWebRTCRtpSenderBackend& backend)
     98    {
     99        ASSERT(backend.hasSource());
     100        setSource(WTFMove(backend.m_source));
     101    }
     102
    97103private:
    98104    void replaceTrack(ScriptExecutionContext&, RTCRtpSender&, RefPtr<MediaStreamTrack>&&, DOMPromiseDeferred<void>&&) final;
Note: See TracChangeset for help on using the changeset viewer.