Changeset 260380 in webkit
- Timestamp:
- Apr 20, 2020 11:16:57 AM (4 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r260378 r260380 1 2020-04-20 Youenn Fablet <youenn@apple.com> 2 3 MediaPlayerPrivateMediaStreamAVFObjC should start play a newly added audio track if it is playing 4 https://bugs.webkit.org/show_bug.cgi?id=210740 5 6 Reviewed by Eric Carlson. 7 8 * fast/mediastream/play-newly-added-audio-track-expected.txt: Added. 9 * fast/mediastream/play-newly-added-audio-track.html: Added. 10 1 11 2020-04-20 Zalan Bujtas <zalan@apple.com> 2 12 -
trunk/Source/WebCore/ChangeLog
r260379 r260380 1 2020-04-20 Youenn Fablet <youenn@apple.com> 2 3 MediaPlayerPrivateMediaStreamAVFObjC should start play a newly added audio track if it is playing 4 https://bugs.webkit.org/show_bug.cgi?id=210740 5 6 Reviewed by Eric Carlson. 7 8 Before the patch, MediaPlayerPrivateMediaStreamAVFObjC was not calling play on the audio renderer when the audio renderer 9 was added after the MediaPlayerPrivateMediaStreamAVFObjC was asked to play. 10 This patch makes it so that, on configuration of an audio track, it will be asked to play if its MediaPlayerPrivateMediaStreamAVFObjC is playing. 11 Add internals API to be able to write a test. 12 13 Test: fast/mediastream/play-newly-added-audio-track.html 14 15 * html/track/AudioTrack.h: 16 * html/track/AudioTrack.idl: 17 * platform/graphics/AudioTrackPrivate.h: 18 (WebCore::AudioTrackPrivate::isBackedByMediaStreamTrack const): 19 * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm: 20 (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::updateTracks): 21 * platform/mediastream/AudioTrackPrivateMediaStream.cpp: 22 (WebCore::AudioTrackPrivateMediaStream::play): 23 * platform/mediastream/AudioTrackPrivateMediaStream.h: 24 (isType): 25 * testing/Internals.cpp: 26 (WebCore::Internals::isMockRealtimeMediaSourceCenterEnabled): 27 (WebCore::Internals::shouldAudioTrackPlay): 28 * testing/Internals.h: 29 * testing/Internals.idl: 30 1 31 2020-04-20 Youenn Fablet <youenn@apple.com> 2 32 -
trunk/Source/WebCore/html/track/AudioTrack.h
r256353 r260380 65 65 size_t inbandTrackIndex() const; 66 66 67 const AudioTrackPrivate& privateTrack() const { return m_private; } 67 68 void setPrivate(AudioTrackPrivate&); 69 68 70 void setMediaElement(WeakPtr<HTMLMediaElement>) override; 69 71 #if !RELEASE_LOG_DISABLED -
trunk/Source/WebCore/html/track/AudioTrack.idl
r219007 r260380 26 26 [ 27 27 Conditional=VIDEO_TRACK, 28 ExportMacro=WEBCORE_EXPORT, 28 29 GenerateIsReachable=ImplElementRoot, 29 30 JSCustomMarkFunction -
trunk/Source/WebCore/platform/graphics/AudioTrackPrivate.h
r254454 r260380 63 63 virtual Kind kind() const { return None; } 64 64 65 virtual bool isBackedByMediaStreamTrack() const { return false; } 66 65 67 #if !RELEASE_LOG_DISABLED 66 68 const char* logClassName() const override { return "AudioTrackPrivate"; } -
trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm
r259861 r260380 896 896 case TrackState::Configure: 897 897 track.setTrackIndex(index); 898 bool enabled = track.streamTrack().enabled() && !track.streamTrack().muted(); 899 track.setEnabled(enabled); 898 track.setVolume(m_volume); 899 track.setMuted(m_muted); 900 track.setEnabled(track.streamTrack().enabled() && !track.streamTrack().muted()); 901 if (playing()) 902 track.play(); 900 903 break; 901 904 } -
trunk/Source/WebCore/platform/mediastream/AudioTrackPrivateMediaStream.cpp
r259861 r260380 73 73 void AudioTrackPrivateMediaStream::play() 74 74 { 75 if (m_shouldPlay) 76 return; 77 75 78 m_shouldPlay = true; 76 79 updateRenderer(); -
trunk/Source/WebCore/platform/mediastream/AudioTrackPrivateMediaStream.h
r259861 r260380 55 55 void play(); 56 56 void pause(); 57 bool isPlaying() { return m_isPlaying; } 57 bool isPlaying() const { return m_isPlaying; } 58 bool shouldPlay() const { return m_shouldPlay; } 58 59 59 60 void setVolume(float); … … 76 77 AtomString label() const final { return m_label; } 77 78 int trackIndex() const final { return m_index; } 79 bool isBackedByMediaStreamTrack() const final { return true; } 78 80 79 81 // MediaStreamTrackPrivate::Observer … … 108 110 } 109 111 112 SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::AudioTrackPrivateMediaStream) 113 static bool isType(const WebCore::AudioTrackPrivate& track) { return track.isBackedByMediaStreamTrack(); } 114 SPECIALIZE_TYPE_TRAITS_END() 115 110 116 #endif // ENABLE(VIDEO_TRACK) && ENABLE(MEDIA_STREAM) -
trunk/Source/WebCore/testing/Internals.cpp
r260379 r260380 33 33 #include "ApplicationCacheStorage.h" 34 34 #include "AudioSession.h" 35 #include "AudioTrackPrivateMediaStream.h" 35 36 #include "Autofill.h" 36 37 #include "BackForwardCache.h" … … 5077 5078 return MockRealtimeMediaSourceCenter::mockRealtimeMediaSourceCenterEnabled(); 5078 5079 } 5080 5081 bool Internals::shouldAudioTrackPlay(const AudioTrack& track) 5082 { 5083 if (!is<AudioTrackPrivateMediaStream>(track.privateTrack())) 5084 return false; 5085 return downcast<AudioTrackPrivateMediaStream>(track.privateTrack()).shouldPlay(); 5086 } 5079 5087 #endif 5080 5088 -
trunk/Source/WebCore/testing/Internals.h
r260247 r260380 53 53 class AnimationTimeline; 54 54 class AudioContext; 55 class AudioTrack; 55 56 class CacheStorageConnection; 56 57 class DOMRect; … … 765 766 void setMediaStreamSourceInterrupted(MediaStreamTrack&, bool); 766 767 bool isMockRealtimeMediaSourceCenterEnabled(); 768 bool shouldAudioTrackPlay(const AudioTrack&); 767 769 #endif 768 770 -
trunk/Source/WebCore/testing/Internals.idl
r260247 r260380 778 778 [Conditional=MEDIA_STREAM] void setMediaStreamSourceInterrupted(MediaStreamTrack track, boolean interrupted); 779 779 [Conditional=MEDIA_STREAM] boolean isMockRealtimeMediaSourceCenterEnabled(); 780 [Conditional=MEDIA_STREAM] boolean shouldAudioTrackPlay(AudioTrack track); 780 781 781 782 unsigned long long documentIdentifier(Document document);
Note: See TracChangeset
for help on using the changeset viewer.