Changeset 240152 in webkit
- Timestamp:
- Jan 18, 2019 9:19:26 AM (5 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r240150 r240152 1 2019-01-18 Youenn Fablet <youenn@apple.com> 2 3 A track source should be unmuted whenever reenabled after setDirection changes 4 https://bugs.webkit.org/show_bug.cgi?id=193554 5 <rdar://problem/47366196> 6 7 Reviewed by Eric Carlson. 8 9 * webrtc/video-setDirection-expected.txt: Added. 10 * webrtc/video-setDirection.html: Added. 11 1 12 2019-01-18 Jonathan Bedard <jbedard@apple.com> 2 13 -
trunk/Source/WebCore/ChangeLog
r240148 r240152 1 2019-01-18 Youenn Fablet <youenn@apple.com> 2 3 A track source should be unmuted whenever reenabled after setDirection changes 4 https://bugs.webkit.org/show_bug.cgi?id=193554 5 <rdar://problem/47366196> 6 7 Reviewed by Eric Carlson. 8 9 Ensure that track gets unmuted after being fired as part of track event. 10 Test is triggering some existing issues with MediaPlayerPrivateMediaStreamAVFObjC. 11 Given the enqueuing of samples happens in a different frame than the thread used to update media stream and the active video track, 12 some enqueued samples might not be from the right active video track or there might be no active video track. 13 14 Test: webrtc/video-setDirection.html 15 16 * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp: 17 (WebCore::LibWebRTCMediaEndpoint::fireTrackEvent): 18 * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h: 19 * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm: 20 (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::enqueueVideoSample): 21 (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::requestNotificationWhenReadyForVideoData): 22 1 23 2019-01-18 Charlie Turner <cturner@igalia.com> 2 24 -
trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp
r240120 r240152 414 414 } 415 415 416 void LibWebRTCMediaEndpoint::fireTrackEvent(Ref<RTCRtpReceiver>&& receiver, Ref<MediaStreamTrack>&& track, const std::vector<rtc::scoped_refptr<webrtc::MediaStreamInterface>>& rtcStreams, RefPtr<RTCRtpTransceiver>&& transceiver)416 void LibWebRTCMediaEndpoint::fireTrackEvent(Ref<RTCRtpReceiver>&& receiver, MediaStreamTrack& track, const std::vector<rtc::scoped_refptr<webrtc::MediaStreamInterface>>& rtcStreams, RefPtr<RTCRtpTransceiver>&& transceiver) 417 417 { 418 418 Vector<RefPtr<MediaStream>> streams; … … 420 420 auto& mediaStream = mediaStreamFromRTCStream(*rtcStream.get()); 421 421 streams.append(&mediaStream); 422 mediaStream.addTrackFromPlatform(track .get());422 mediaStream.addTrackFromPlatform(track); 423 423 } 424 424 auto streamIds = WTF::map(streams, [](auto& stream) -> String { 425 425 return stream->id(); 426 426 }); 427 m_remoteStreamsFromRemoteTrack.add( track.ptr(), WTFMove(streamIds));427 m_remoteStreamsFromRemoteTrack.add(&track, WTFMove(streamIds)); 428 428 429 429 m_peerConnectionBackend.connection().fireEvent(RTCTrackEvent::create(eventNames().trackEvent, 430 Event::CanBubble::No, Event::IsCancelable::No, WTFMove(receiver), WTFMove(track), WTFMove(streams), WTFMove(transceiver))); 430 Event::CanBubble::No, Event::IsCancelable::No, WTFMove(receiver), &track, WTFMove(streams), WTFMove(transceiver))); 431 432 // FIXME: As per spec, we should set muted to 'false' when starting to receive the content from network. 433 track.source().setMuted(false); 431 434 } 432 435 -
trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h
r240120 r240152 144 144 void removeRemoteTrack(rtc::scoped_refptr<webrtc::RtpReceiverInterface>&&); 145 145 146 void fireTrackEvent(Ref<RTCRtpReceiver>&&, Ref<MediaStreamTrack>&&, const std::vector<rtc::scoped_refptr<webrtc::MediaStreamInterface>>&, RefPtr<RTCRtpTransceiver>&&);146 void fireTrackEvent(Ref<RTCRtpReceiver>&&, MediaStreamTrack&, const std::vector<rtc::scoped_refptr<webrtc::MediaStreamInterface>>&, RefPtr<RTCRtpTransceiver>&&); 147 147 148 148 template<typename T> -
trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm
r239461 r240152 360 360 void MediaPlayerPrivateMediaStreamAVFObjC::enqueueVideoSample(MediaStreamTrackPrivate& track, MediaSample& sample) 361 361 { 362 ASSERT(m_videoTrackMap.contains(track.id()));363 364 362 if (&track != m_mediaStreamPrivate->activeVideoTrack()) 365 363 return; … … 414 412 415 413 [m_sampleBufferDisplayLayer stopRequestingMediaData]; 414 415 if (!m_activeVideoTrack) { 416 m_pendingVideoSampleQueue.clear(); 417 return; 418 } 416 419 417 420 while (!m_pendingVideoSampleQueue.isEmpty()) {
Note: See TracChangeset
for help on using the changeset viewer.