Changeset 254454 in webkit
- Timestamp:
- Jan 13, 2020 2:27:39 PM (4 years ago)
- Location:
- trunk
- Files:
-
- 6 added
- 21 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r254453 r254454 1 2020-01-13 Eric Carlson <eric.carlson@apple.com> 2 3 Expose audio tracks for media files in the GPUProcess 4 https://bugs.webkit.org/show_bug.cgi?id=206152 5 <rdar://problem/58513227> 6 7 Reviewed by youenn fablet. 8 9 * gpu-process/TestExpectations: 10 1 11 2020-01-13 Zalan Bujtas <zalan@apple.com> 2 12 -
trunk/LayoutTests/gpu-process/TestExpectations
r254392 r254454 219 219 media/video-controls-visible-audio-only.html [ Pass ] 220 220 media/video-play-audio-require-user-gesture.html [ Pass ] 221 media/track/audio-track.html [ Pass ] 222 media/audio-track-add-remove.html [ Pass ] 221 223 222 224 accessibility/media-element.html [ Skip ] -
trunk/Source/WebCore/ChangeLog
r254446 r254454 1 2020-01-13 Eric Carlson <eric.carlson@apple.com> 2 3 Expose audio tracks for media files in the GPUProcess 4 https://bugs.webkit.org/show_bug.cgi?id=206152 5 <rdar://problem/58513227> 6 7 Reviewed by youenn fablet. 8 9 No new tests, un-skipped existing tests that pass because of this change. 10 11 * platform/graphics/AudioTrackPrivate.h: 12 * platform/graphics/TrackPrivateBase.h: 13 1 14 2020-01-13 youenn fablet <youenn@apple.com> 2 15 -
trunk/Source/WebCore/platform/graphics/AudioTrackPrivate.h
r222091 r254454 77 77 } // namespace WebCore 78 78 79 namespace WTF { 80 81 template<> struct EnumTraits<WebCore::AudioTrackPrivate::Kind> { 82 using values = EnumValues< 83 WebCore::AudioTrackPrivate::Kind, 84 WebCore::AudioTrackPrivate::Kind::Alternative, 85 WebCore::AudioTrackPrivate::Kind::Description, 86 WebCore::AudioTrackPrivate::Kind::Main, 87 WebCore::AudioTrackPrivate::Kind::MainDesc, 88 WebCore::AudioTrackPrivate::Kind::Translation, 89 WebCore::AudioTrackPrivate::Kind::Commentary, 90 WebCore::AudioTrackPrivate::Kind::None 91 >; 92 }; 93 94 } // namespace WTF 95 79 96 #endif -
trunk/Source/WebCore/platform/graphics/TrackPrivateBase.h
r254446 r254454 46 46 }; 47 47 48 class TrackPrivateBase48 class WEBCORE_EXPORT TrackPrivateBase 49 49 : public ThreadSafeRefCounted<TrackPrivateBase, WTF::DestructionThread::Main> 50 50 #if !RELEASE_LOG_DISABLED -
trunk/Source/WebKit/ChangeLog
r254439 r254454 1 2020-01-13 Eric Carlson <eric.carlson@apple.com> 2 3 Expose audio tracks for media files in the GPUProcess 4 https://bugs.webkit.org/show_bug.cgi?id=206152 5 <rdar://problem/58513227> 6 7 Reviewed by youenn fablet. 8 9 * GPUProcess/media/RemoteAudioTrackProxy.cpp: Added. 10 (WebKit::RemoteAudioTrackProxy::RemoteAudioTrackProxy): 11 (WebKit::RemoteAudioTrackProxy::configuration): 12 (WebKit::RemoteAudioTrackProxy::configurationChanged): 13 (WebKit::RemoteAudioTrackProxy::willRemove): 14 (WebKit::RemoteAudioTrackProxy::enabledChanged): 15 (WebKit::RemoteAudioTrackProxy::idChanged): 16 (WebKit::RemoteAudioTrackProxy::labelChanged): 17 (WebKit::RemoteAudioTrackProxy::languageChanged): 18 * GPUProcess/media/RemoteAudioTrackProxy.h: Added. 19 * GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp: 20 (WebKit::RemoteMediaPlayerManagerProxy::setRate): 21 (WebKit::RemoteMediaPlayerManagerProxy::audioTrackSetEnabled): 22 * GPUProcess/media/RemoteMediaPlayerManagerProxy.h: 23 * GPUProcess/media/RemoteMediaPlayerManagerProxy.messages.in: 24 * GPUProcess/media/RemoteMediaPlayerProxy.cpp: 25 (WebKit::RemoteMediaPlayerProxy::mediaPlayerDidAddAudioTrack): 26 (WebKit::RemoteMediaPlayerProxy::mediaPlayerDidRemoveAudioTrack): 27 (WebKit::RemoteMediaPlayerProxy::audioTrackSetEnabled): 28 * GPUProcess/media/RemoteMediaPlayerProxy.h: 29 * GPUProcess/media/TrackPrivateRemoteConfiguration.h: Added. 30 (WebKit::TrackPrivateRemoteConfiguration::encode const): 31 (WebKit::TrackPrivateRemoteConfiguration::decode): 32 * GPUProcess/media/TrackPrivateRemoteIdentifier.h: Added. 33 * Scripts/webkit/messages.py: 34 * Sources.txt: 35 * WebKit.xcodeproj/project.pbxproj: 36 * WebProcess/GPU/media/AudioTrackPrivateRemote.cpp: Added. 37 (WebKit::AudioTrackPrivateRemote::AudioTrackPrivateRemote): 38 (WebKit::AudioTrackPrivateRemote::setEnabled): 39 (WebKit::AudioTrackPrivateRemote::updateConfiguration): 40 * WebProcess/GPU/media/AudioTrackPrivateRemote.h: Added. 41 (WebKit::AudioTrackPrivateRemote::create): 42 * WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp: 43 (WebKit::MediaPlayerPrivateRemote::addRemoteAudioTrack): 44 (WebKit::MediaPlayerPrivateRemote::removeRemoteAudioTrack): 45 (WebKit::MediaPlayerPrivateRemote::remoteAudioTrackConfigurationChanged): 46 * WebProcess/GPU/media/MediaPlayerPrivateRemote.h: 47 * WebProcess/GPU/media/RemoteMediaPlayerManager.cpp: 48 (WebKit::RemoteMediaPlayerManager::timeChanged): 49 (WebKit::RemoteMediaPlayerManager::durationChanged): 50 (WebKit::RemoteMediaPlayerManager::engineFailedToLoad): 51 (WebKit::RemoteMediaPlayerManager::characteristicChanged): 52 (WebKit::RemoteMediaPlayerManager::sizeChanged): 53 (WebKit::RemoteMediaPlayerManager::addRemoteAudioTrack): 54 (WebKit::RemoteMediaPlayerManager::removeRemoteAudioTrack): 55 (WebKit::RemoteMediaPlayerManager::remoteAudioTrackConfigurationChanged): 56 (WebKit::RemoteMediaPlayerManager::updateCachedState): 57 * WebProcess/GPU/media/RemoteMediaPlayerManager.h: 58 * WebProcess/GPU/media/RemoteMediaPlayerManager.messages.in: 59 * WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp: 60 1 61 2020-01-06 Jiewen Tan <jiewen_tan@apple.com> 2 62 -
trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp
r254392 r254454 324 324 } 325 325 326 void RemoteMediaPlayerManagerProxy::setRate( WebKit::MediaPlayerPrivateRemoteIdentifier id, double rate)326 void RemoteMediaPlayerManagerProxy::setRate(MediaPlayerPrivateRemoteIdentifier id, double rate) 327 327 { 328 328 if (auto player = m_proxies.get(id)) 329 329 player->setRate(rate); 330 } 331 332 void RemoteMediaPlayerManagerProxy::audioTrackSetEnabled(MediaPlayerPrivateRemoteIdentifier playerID, TrackPrivateRemoteIdentifier trackID, bool enabled) 333 { 334 if (auto player = m_proxies.get(playerID)) 335 player->audioTrackSetEnabled(trackID, enabled); 330 336 } 331 337 -
trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.h
r254392 r254454 32 32 #include "MessageReceiver.h" 33 33 #include "SandboxExtension.h" 34 #include "TrackPrivateRemoteIdentifier.h" 34 35 #include <WebCore/MediaPlayer.h> 35 36 #include <wtf/LoggerHelper.h> … … 110 111 void acceleratedRenderingStateChanged(MediaPlayerPrivateRemoteIdentifier, bool); 111 112 void setShouldDisableSleep(MediaPlayerPrivateRemoteIdentifier, bool); 112 void setRate(WebKit::MediaPlayerPrivateRemoteIdentifier, double); 113 void setRate(MediaPlayerPrivateRemoteIdentifier, double); 114 115 void audioTrackSetEnabled(MediaPlayerPrivateRemoteIdentifier, TrackPrivateRemoteIdentifier, bool); 113 116 114 117 HashMap<MediaPlayerPrivateRemoteIdentifier, std::unique_ptr<RemoteMediaPlayerProxy>> m_proxies; -
trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.messages.in
r254392 r254454 65 65 SetShouldDisableSleep(WebKit::MediaPlayerPrivateRemoteIdentifier id, bool disable) 66 66 SetRate(WebKit::MediaPlayerPrivateRemoteIdentifier id, double rate) 67 68 AudioTrackSetEnabled(WebKit::MediaPlayerPrivateRemoteIdentifier playerID, WebKit::TrackPrivateRemoteIdentifier trackID, bool enabled) 67 69 } 68 70 -
trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp
r254392 r254454 365 365 } 366 366 367 void RemoteMediaPlayerProxy::mediaPlayerDidAddAudioTrack(WebCore::AudioTrackPrivate& track) 368 { 369 m_audioTracks.set(&track, RemoteAudioTrackProxy::create(*this, TrackPrivateRemoteIdentifier::generate(), m_webProcessConnection.copyRef(), track)); 370 } 371 372 void RemoteMediaPlayerProxy::mediaPlayerDidRemoveAudioTrack(WebCore::AudioTrackPrivate& track) 373 { 374 ASSERT(m_audioTracks.contains(&track)); 375 m_audioTracks.remove(&track); 376 } 377 378 void RemoteMediaPlayerProxy::audioTrackSetEnabled(TrackPrivateRemoteIdentifier trackID, bool enabled) 379 { 380 for (auto& track : m_audioTracks.values()) { 381 if (track->identifier() == trackID) { 382 track->setEnabled(enabled); 383 return; 384 } 385 } 386 387 ASSERT_NOT_REACHED(); 388 } 389 367 390 // FIXME: Unimplemented 368 391 void RemoteMediaPlayerProxy::mediaPlayerResourceNotSupported() … … 493 516 494 517 #if ENABLE(VIDEO_TRACK) 495 void RemoteMediaPlayerProxy::mediaPlayerDidAddAudioTrack(AudioTrackPrivate&)496 {497 notImplemented();498 }499 500 518 void RemoteMediaPlayerProxy::mediaPlayerDidAddTextTrack(InbandTextTrackPrivate&) 501 519 { … … 504 522 505 523 void RemoteMediaPlayerProxy::mediaPlayerDidAddVideoTrack(VideoTrackPrivate&) 506 {507 notImplemented();508 }509 510 void RemoteMediaPlayerProxy::mediaPlayerDidRemoveAudioTrack(AudioTrackPrivate&)511 524 { 512 525 notImplemented(); -
trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.h
r254392 r254454 44 44 #include <wtf/WeakPtr.h> 45 45 46 namespace WebCore { 47 class AudioTrackPrivate; 48 } 49 46 50 namespace WebKit { 47 51 … … 56 60 ~RemoteMediaPlayerProxy(); 57 61 62 MediaPlayerPrivateRemoteIdentifier idendifier() const { return m_id; } 58 63 void invalidate(); 59 64 … … 89 94 void setShouldDisableSleep(bool); 90 95 void setRate(double); 96 97 void audioTrackSetEnabled(TrackPrivateRemoteIdentifier, bool); 91 98 92 99 Ref<WebCore::PlatformMediaResource> requestResource(WebCore::ResourceRequest&&, WebCore::PlatformMediaResourceLoader::LoadOptions); … … 107 114 void mediaPlayerSeekableTimeRangesChanged() final; 108 115 bool mediaPlayerRenderingCanBeAccelerated() final; 116 117 void mediaPlayerDidAddAudioTrack(WebCore::AudioTrackPrivate&) final; 118 void mediaPlayerDidRemoveAudioTrack(WebCore::AudioTrackPrivate&) final; 109 119 110 120 // Not implemented … … 148 158 const String& mediaPlayerMediaCacheDirectory() const final; 149 159 150 void mediaPlayerDidAddAudioTrack(WebCore::AudioTrackPrivate&) final;151 160 void mediaPlayerDidAddTextTrack(WebCore::InbandTextTrackPrivate&) final; 152 161 void mediaPlayerDidAddVideoTrack(WebCore::VideoTrackPrivate&) final; 153 void mediaPlayerDidRemoveAudioTrack(WebCore::AudioTrackPrivate&) final;154 162 void mediaPlayerDidRemoveTextTrack(WebCore::InbandTextTrackPrivate&) final; 155 163 void mediaPlayerDidRemoveVideoTrack(WebCore::VideoTrackPrivate&) final; … … 187 195 #endif 188 196 197 HashMap<AudioTrackPrivate*, Ref<RemoteAudioTrackProxy>> m_audioTracks; 189 198 MediaPlayerPrivateRemoteIdentifier m_id; 190 199 RefPtr<SandboxExtension> m_sandboxExtension; -
trunk/Source/WebKit/Scripts/webkit/messages.py
r254383 r254454 228 228 'WebKit::StorageAreaImplIdentifier', 229 229 'WebKit::StorageNamespaceIdentifier', 230 'WebKit::TrackPrivateRemoteIdentifier', 230 231 'WebKit::TransactionID', 231 232 'WebKit::UserContentControllerIdentifier', -
trunk/Source/WebKit/Sources.txt
r254194 r254454 27 27 GPUProcess/webrtc/RemoteMediaRecorder.cpp 28 28 GPUProcess/webrtc/RemoteMediaRecorderManager.cpp 29 GPUProcess/media/RemoteAudioTrackProxy.cpp 29 30 GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp 30 31 GPUProcess/media/RemoteMediaPlayerProxy.cpp … … 511 512 512 513 WebProcess/GPU/GPUProcessConnection.cpp 514 WebProcess/GPU/media/AudioTrackPrivateRemote.cpp 513 515 WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp 514 516 WebProcess/GPU/media/RemoteMediaPlayerManager.cpp -
trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj
r254360 r254454 2052 2052 0701789B23BAE261005F0FAA /* RemoteMediaPlayerMIMETypeCache.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RemoteMediaPlayerMIMETypeCache.cpp; sourceTree = "<group>"; }; 2053 2053 0701789C23BAE262005F0FAA /* RemoteMediaPlayerMIMETypeCache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RemoteMediaPlayerMIMETypeCache.h; sourceTree = "<group>"; }; 2054 071BC57723C93BB700680D7C /* AudioTrackPrivateRemote.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AudioTrackPrivateRemote.h; sourceTree = "<group>"; }; 2055 071BC57923C93BB900680D7C /* AudioTrackPrivateRemote.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AudioTrackPrivateRemote.cpp; sourceTree = "<group>"; }; 2056 071BC57B23CA532400680D7C /* TrackPrivateRemoteConfiguration.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TrackPrivateRemoteConfiguration.h; sourceTree = "<group>"; }; 2057 071BC57D23CA56D200680D7C /* TrackPrivateRemoteIdentifier.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TrackPrivateRemoteIdentifier.h; sourceTree = "<group>"; }; 2058 071BC57E23CA5DB100680D7C /* RemoteAudioTrackProxy.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RemoteAudioTrackProxy.cpp; sourceTree = "<group>"; }; 2059 071BC57F23CA5DB100680D7C /* RemoteAudioTrackProxy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RemoteAudioTrackProxy.h; sourceTree = "<group>"; }; 2054 2060 0725EFAB239AE38400A538A9 /* RemoteMediaPlayerManagerProxy.messages.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = RemoteMediaPlayerManagerProxy.messages.in; sourceTree = "<group>"; }; 2055 2061 0725EFAC239AE38500A538A9 /* RemoteMediaPlayerManagerProxy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RemoteMediaPlayerManagerProxy.h; sourceTree = "<group>"; }; … … 5170 5176 isa = PBXGroup; 5171 5177 children = ( 5178 071BC57923C93BB900680D7C /* AudioTrackPrivateRemote.cpp */, 5179 071BC57723C93BB700680D7C /* AudioTrackPrivateRemote.h */, 5172 5180 07923131239B3B0C009598E2 /* MediaPlayerPrivateRemote.cpp */, 5173 5181 07923132239B3B0C009598E2 /* MediaPlayerPrivateRemote.h */, … … 5189 5197 isa = PBXGroup; 5190 5198 children = ( 5199 071BC57E23CA5DB100680D7C /* RemoteAudioTrackProxy.cpp */, 5200 071BC57F23CA5DB100680D7C /* RemoteAudioTrackProxy.h */, 5191 5201 0725EFAD239B024500A538A9 /* RemoteMediaPlayerManagerProxy.cpp */, 5192 5202 0725EFAC239AE38500A538A9 /* RemoteMediaPlayerManagerProxy.h */, … … 5203 5213 1DA4089423A80A3E0058C950 /* RemoteMediaResourceManager.h */, 5204 5214 1D32F8A623A8601900B1EA6A /* RemoteMediaResourceManager.messages.in */, 5215 071BC57B23CA532400680D7C /* TrackPrivateRemoteConfiguration.h */, 5216 071BC57D23CA56D200680D7C /* TrackPrivateRemoteIdentifier.h */, 5205 5217 ); 5206 5218 path = media; -
trunk/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp
r254392 r254454 29 29 #include "MediaPlayerPrivateRemote.h" 30 30 31 #include "AudioTrackPrivateRemote.h" 31 32 #include "Logging.h" 32 33 #include "RemoteMediaPlayerManagerProxyMessages.h" … … 87 88 void MediaPlayerPrivateRemote::prepareForPlayback(bool privateMode, MediaPlayer::Preload preload, bool preservesPitch, bool prepare) 88 89 { 89 m_manager.gpuProcessConnection().connection().send(Messages::RemoteMediaPlayerManagerProxy::PrepareForPlayback(m_id, privateMode, preload, preservesPitch, prepare), 0);90 connection().send(Messages::RemoteMediaPlayerManagerProxy::PrepareForPlayback(m_id, privateMode, preload, preservesPitch, prepare), 0); 90 91 } 91 92 92 93 void MediaPlayerPrivateRemote::MediaPlayerPrivateRemote::load(const URL& url, const ContentType& contentType, const String& keySystem) 93 94 { 94 auto& connection = m_manager.gpuProcessConnection().connection();95 95 Optional<SandboxExtension::Handle> sandboxExtensionHandle; 96 96 if (url.isLocalFile()) { … … 118 118 } 119 119 120 connection .sendWithAsyncReply(Messages::RemoteMediaPlayerManagerProxy::Load(m_id, url, sandboxExtensionHandle, contentType, keySystem), [weakThis = makeWeakPtr(*this)](auto&& configuration) {120 connection().sendWithAsyncReply(Messages::RemoteMediaPlayerManagerProxy::Load(m_id, url, sandboxExtensionHandle, contentType, keySystem), [weakThis = makeWeakPtr(*this)](auto&& configuration) { 121 121 if (weakThis) 122 122 weakThis->m_configuration = configuration; … … 126 126 void MediaPlayerPrivateRemote::cancelLoad() 127 127 { 128 m_manager.gpuProcessConnection().connection().send(Messages::RemoteMediaPlayerManagerProxy::CancelLoad(m_id), 0);128 connection().send(Messages::RemoteMediaPlayerManagerProxy::CancelLoad(m_id), 0); 129 129 } 130 130 131 131 void MediaPlayerPrivateRemote::prepareToPlay() 132 132 { 133 m_manager.gpuProcessConnection().connection().send(Messages::RemoteMediaPlayerManagerProxy::PrepareToPlay(m_id), 0);133 connection().send(Messages::RemoteMediaPlayerManagerProxy::PrepareToPlay(m_id), 0); 134 134 } 135 135 … … 137 137 { 138 138 m_cachedState.paused = false; 139 m_manager.gpuProcessConnection().connection().send(Messages::RemoteMediaPlayerManagerProxy::Play(m_id), 0);139 connection().send(Messages::RemoteMediaPlayerManagerProxy::Play(m_id), 0); 140 140 } 141 141 … … 143 143 { 144 144 m_cachedState.paused = true; 145 m_manager.gpuProcessConnection().connection().send(Messages::RemoteMediaPlayerManagerProxy::Pause(m_id), 0);145 connection().send(Messages::RemoteMediaPlayerManagerProxy::Pause(m_id), 0); 146 146 } 147 147 148 148 void MediaPlayerPrivateRemote::setPreservesPitch(bool preservesPitch) 149 149 { 150 m_manager.gpuProcessConnection().connection().send(Messages::RemoteMediaPlayerManagerProxy::SetPreservesPitch(m_id, preservesPitch), 0);150 connection().send(Messages::RemoteMediaPlayerManagerProxy::SetPreservesPitch(m_id, preservesPitch), 0); 151 151 } 152 152 153 153 void MediaPlayerPrivateRemote::setVolumeDouble(double volume) 154 154 { 155 m_manager.gpuProcessConnection().connection().send(Messages::RemoteMediaPlayerManagerProxy::SetVolume(m_id, volume), 0);155 connection().send(Messages::RemoteMediaPlayerManagerProxy::SetVolume(m_id, volume), 0); 156 156 } 157 157 158 158 void MediaPlayerPrivateRemote::setMuted(bool muted) 159 159 { 160 m_manager.gpuProcessConnection().connection().send(Messages::RemoteMediaPlayerManagerProxy::SetMuted(m_id, muted), 0);160 connection().send(Messages::RemoteMediaPlayerManagerProxy::SetMuted(m_id, muted), 0); 161 161 } 162 162 163 163 void MediaPlayerPrivateRemote::setPreload(MediaPlayer::Preload preload) 164 164 { 165 m_manager.gpuProcessConnection().connection().send(Messages::RemoteMediaPlayerManagerProxy::SetPreload(m_id, preload), 0);165 connection().send(Messages::RemoteMediaPlayerManagerProxy::SetPreload(m_id, preload), 0); 166 166 } 167 167 168 168 void MediaPlayerPrivateRemote::setPrivateBrowsingMode(bool privateMode) 169 169 { 170 m_manager.gpuProcessConnection().connection().send(Messages::RemoteMediaPlayerManagerProxy::SetPrivateBrowsingMode(m_id, privateMode), 0);170 connection().send(Messages::RemoteMediaPlayerManagerProxy::SetPrivateBrowsingMode(m_id, privateMode), 0); 171 171 } 172 172 … … 179 179 { 180 180 m_seeking = true; 181 m_manager.gpuProcessConnection().connection().send(Messages::RemoteMediaPlayerManagerProxy::Seek(m_id, time), 0);181 connection().send(Messages::RemoteMediaPlayerManagerProxy::Seek(m_id, time), 0); 182 182 } 183 183 … … 185 185 { 186 186 m_seeking = true; 187 m_manager.gpuProcessConnection().connection().send(Messages::RemoteMediaPlayerManagerProxy::SeekWithTolerance(m_id, time, negativeTolerance, positiveTolerance), 0);187 connection().send(Messages::RemoteMediaPlayerManagerProxy::SeekWithTolerance(m_id, time, negativeTolerance, positiveTolerance), 0); 188 188 } 189 189 … … 342 342 void MediaPlayerPrivateRemote::prepareForRendering() 343 343 { 344 m_manager.gpuProcessConnection().connection().send(Messages::RemoteMediaPlayerManagerProxy::PrepareForRendering(m_id), 0);344 connection().send(Messages::RemoteMediaPlayerManagerProxy::PrepareForRendering(m_id), 0); 345 345 } 346 346 347 347 void MediaPlayerPrivateRemote::setSize(const WebCore::IntSize& size) 348 348 { 349 m_manager.gpuProcessConnection().connection().send(Messages::RemoteMediaPlayerManagerProxy::SetSize(m_id, size), 0);349 connection().send(Messages::RemoteMediaPlayerManagerProxy::SetSize(m_id, size), 0); 350 350 } 351 351 352 352 void MediaPlayerPrivateRemote::setVisible(bool visible) 353 353 { 354 m_manager.gpuProcessConnection().connection().send(Messages::RemoteMediaPlayerManagerProxy::SetVisible(m_id, visible), 0);354 connection().send(Messages::RemoteMediaPlayerManagerProxy::SetVisible(m_id, visible), 0); 355 355 } 356 356 357 357 void MediaPlayerPrivateRemote::setShouldMaintainAspectRatio(bool maintainRatio) 358 358 { 359 m_manager.gpuProcessConnection().connection().send(Messages::RemoteMediaPlayerManagerProxy::SetShouldMaintainAspectRatio(m_id, maintainRatio), 0);359 connection().send(Messages::RemoteMediaPlayerManagerProxy::SetShouldMaintainAspectRatio(m_id, maintainRatio), 0); 360 360 } 361 361 362 362 void MediaPlayerPrivateRemote::setVideoFullscreenFrame(WebCore::FloatRect rect) 363 363 { 364 m_manager.gpuProcessConnection().connection().send(Messages::RemoteMediaPlayerManagerProxy::SetVideoFullscreenFrame(m_id, rect), 0);364 connection().send(Messages::RemoteMediaPlayerManagerProxy::SetVideoFullscreenFrame(m_id, rect), 0); 365 365 } 366 366 367 367 void MediaPlayerPrivateRemote::setVideoFullscreenGravity(WebCore::MediaPlayerEnums::VideoGravity gravity) 368 368 { 369 m_manager.gpuProcessConnection().connection().send(Messages::RemoteMediaPlayerManagerProxy::SetVideoFullscreenGravity(m_id, gravity), 0);369 connection().send(Messages::RemoteMediaPlayerManagerProxy::SetVideoFullscreenGravity(m_id, gravity), 0); 370 370 } 371 371 372 372 void MediaPlayerPrivateRemote::acceleratedRenderingStateChanged() 373 373 { 374 m_manager.gpuProcessConnection().connection().send(Messages::RemoteMediaPlayerManagerProxy::AcceleratedRenderingStateChanged(m_id, m_player->supportsAcceleratedRendering()), 0);374 connection().send(Messages::RemoteMediaPlayerManagerProxy::AcceleratedRenderingStateChanged(m_id, m_player->supportsAcceleratedRendering()), 0); 375 375 } 376 376 377 377 void MediaPlayerPrivateRemote::setShouldDisableSleep(bool disable) 378 378 { 379 m_manager.gpuProcessConnection().connection().send(Messages::RemoteMediaPlayerManagerProxy::SetShouldDisableSleep(m_id, disable), 0);379 connection().send(Messages::RemoteMediaPlayerManagerProxy::SetShouldDisableSleep(m_id, disable), 0); 380 380 } 381 381 … … 383 383 { 384 384 return m_cachedState.naturalSize; 385 } 386 387 void MediaPlayerPrivateRemote::addRemoteAudioTrack(TrackPrivateRemoteIdentifier identifier, TrackPrivateRemoteConfiguration&& configuration) 388 { 389 ASSERT(!m_audioTracks.contains(identifier)); 390 if (m_audioTracks.contains(identifier)) 391 return; 392 393 auto track = AudioTrackPrivateRemote::create(*this, identifier, WTFMove(configuration)); 394 m_player->addAudioTrack(m_audioTracks.add(identifier, WTFMove(track)).iterator->value); 395 } 396 397 void MediaPlayerPrivateRemote::removeRemoteAudioTrack(TrackPrivateRemoteIdentifier id) 398 { 399 ASSERT(m_audioTracks.contains(id)); 400 401 if (auto* track = m_audioTracks.get(id)) { 402 m_player->removeAudioTrack(*track); 403 m_audioTracks.remove(id); 404 } 405 } 406 407 void MediaPlayerPrivateRemote::remoteAudioTrackConfigurationChanged(TrackPrivateRemoteIdentifier id, TrackPrivateRemoteConfiguration&& configuration) 408 { 409 ASSERT(m_audioTracks.contains(id)); 410 411 if (const auto& track = m_audioTracks.get(id)) 412 track->updateConfiguration(WTFMove(configuration)); 385 413 } 386 414 … … 842 870 auto resource = m_mediaResourceLoader->requestResource(WTFMove(request), options); 843 871 // PlatformMediaResource owns the PlatformMediaResourceClient 844 resource->setClient(makeUnique<RemoteMediaResourceProxy>( m_manager.gpuProcessConnection().connection(), *resource, remoteMediaResourceIdentifier));872 resource->setClient(makeUnique<RemoteMediaResourceProxy>(connection(), *resource, remoteMediaResourceIdentifier)); 845 873 m_mediaResources.add(remoteMediaResourceIdentifier, WTFMove(resource)); 846 874 } -
trunk/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.h
r254392 r254454 33 33 #include "RemoteMediaResourceIdentifier.h" 34 34 #include "RemoteMediaResourceProxy.h" 35 #include "TrackPrivateRemoteIdentifier.h" 35 36 #include <WebCore/MediaPlayerPrivate.h> 36 37 #include <wtf/LoggerHelper.h> … … 39 40 40 41 namespace WebKit { 42 43 class AudioTrackPrivateRemote; 44 struct TrackPrivateRemoteConfiguration; 41 45 42 46 class MediaPlayerPrivateRemote final … … 59 63 void invalidate() { m_invalid = true; } 60 64 WebCore::MediaPlayerEnums::MediaEngineIdentifier remoteEngineIdentifier() const { return m_remoteEngineIdentifier; } 61 MediaPlayerPrivateRemoteIdentifier playerItentifier() const { return m_id; } 65 MediaPlayerPrivateRemoteIdentifier itentifier() const { return m_id; } 66 IPC::Connection& connection() const { return m_manager.gpuProcessConnection().connection(); } 62 67 63 68 void networkStateChanged(RemoteMediaPlayerState&&); … … 74 79 void sizeChanged(WebCore::FloatSize); 75 80 81 void addRemoteAudioTrack(TrackPrivateRemoteIdentifier, TrackPrivateRemoteConfiguration&&); 82 void removeRemoteAudioTrack(TrackPrivateRemoteIdentifier); 83 void remoteAudioTrackConfigurationChanged(TrackPrivateRemoteIdentifier, TrackPrivateRemoteConfiguration&&); 84 76 85 void requestResource(RemoteMediaResourceIdentifier, WebCore::ResourceRequest&&, WebCore::PlatformMediaResourceLoader::LoadOptions); 77 86 void removeResource(RemoteMediaResourceIdentifier); … … 312 321 313 322 HashMap<RemoteMediaResourceIdentifier, RefPtr<WebCore::PlatformMediaResource>> m_mediaResources; 323 HashMap<TrackPrivateRemoteIdentifier, Ref<AudioTrackPrivateRemote>> m_audioTracks; 314 324 315 325 double m_volume { 1 }; -
trunk/Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.cpp
r254392 r254454 1 1 /* 2 * Copyright (C) 2019 Apple Inc. All rights reserved.2 * Copyright (C) 2019-2020 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 262 262 } 263 263 264 void RemoteMediaPlayerManager::timeChanged( WebKit::MediaPlayerPrivateRemoteIdentifier id, RemoteMediaPlayerState&& state)264 void RemoteMediaPlayerManager::timeChanged(MediaPlayerPrivateRemoteIdentifier id, RemoteMediaPlayerState&& state) 265 265 { 266 266 if (const auto& player = m_players.get(id)) … … 268 268 } 269 269 270 void RemoteMediaPlayerManager::durationChanged( WebKit::MediaPlayerPrivateRemoteIdentifier id, RemoteMediaPlayerState&& state)270 void RemoteMediaPlayerManager::durationChanged(MediaPlayerPrivateRemoteIdentifier id, RemoteMediaPlayerState&& state) 271 271 { 272 272 if (const auto& player = m_players.get(id)) … … 286 286 } 287 287 288 void RemoteMediaPlayerManager::engineFailedToLoad( WebKit::MediaPlayerPrivateRemoteIdentifier id, long platformErrorCode)288 void RemoteMediaPlayerManager::engineFailedToLoad(MediaPlayerPrivateRemoteIdentifier id, long platformErrorCode) 289 289 { 290 290 if (const auto& player = m_players.get(id)) … … 292 292 } 293 293 294 void RemoteMediaPlayerManager::characteristicChanged( WebKit::MediaPlayerPrivateRemoteIdentifier id, bool hasAudio, bool hasVideo, WebCore::MediaPlayerEnums::MovieLoadType loadType)294 void RemoteMediaPlayerManager::characteristicChanged(MediaPlayerPrivateRemoteIdentifier id, bool hasAudio, bool hasVideo, WebCore::MediaPlayerEnums::MovieLoadType loadType) 295 295 { 296 296 if (auto player = m_players.get(id)) … … 298 298 } 299 299 300 void RemoteMediaPlayerManager::sizeChanged( WebKit::MediaPlayerPrivateRemoteIdentifier id, WebCore::FloatSize naturalSize)300 void RemoteMediaPlayerManager::sizeChanged(MediaPlayerPrivateRemoteIdentifier id, WebCore::FloatSize naturalSize) 301 301 { 302 302 if (auto player = m_players.get(id)) 303 303 player->sizeChanged(naturalSize); 304 } 305 306 void RemoteMediaPlayerManager::addRemoteAudioTrack(MediaPlayerPrivateRemoteIdentifier playerID, TrackPrivateRemoteIdentifier trackID, TrackPrivateRemoteConfiguration&& configuration) 307 { 308 if (const auto& player = m_players.get(playerID)) 309 player->addRemoteAudioTrack(trackID, WTFMove(configuration)); 310 } 311 312 void RemoteMediaPlayerManager::removeRemoteAudioTrack(MediaPlayerPrivateRemoteIdentifier playerID, TrackPrivateRemoteIdentifier trackID) 313 { 314 if (const auto& player = m_players.get(playerID)) 315 player->removeRemoteAudioTrack(trackID); 316 } 317 318 void RemoteMediaPlayerManager::remoteAudioTrackConfigurationChanged(MediaPlayerPrivateRemoteIdentifier playerID, TrackPrivateRemoteIdentifier trackID, TrackPrivateRemoteConfiguration&& configuration) 319 { 320 if (const auto& player = m_players.get(playerID)) 321 player->remoteAudioTrackConfigurationChanged(trackID, WTFMove(configuration)); 304 322 } 305 323 … … 327 345 } 328 346 329 void RemoteMediaPlayerManager::updateCachedState( WebKit::MediaPlayerPrivateRemoteIdentifier id, RemoteMediaPlayerState&& state)347 void RemoteMediaPlayerManager::updateCachedState(MediaPlayerPrivateRemoteIdentifier id, RemoteMediaPlayerState&& state) 330 348 { 331 349 if (auto player = m_players.get(id)) -
trunk/Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.h
r254392 r254454 34 34 #include "RemoteMediaResourceIdentifier.h" 35 35 #include "SharedMemory.h" 36 #include "TrackPrivateRemoteIdentifier.h" 36 37 #include "WebProcessSupplement.h" 37 38 #include <WebCore/MediaPlayer.h> … … 48 49 class RemoteMediaPlayerMIMETypeCache; 49 50 class WebProcess; 51 struct TrackPrivateRemoteConfiguration; 50 52 51 53 class RemoteMediaPlayerManager : public WebProcessSupplement, public IPC::MessageReceiver { … … 78 80 void networkStateChanged(MediaPlayerPrivateRemoteIdentifier, RemoteMediaPlayerState&&); 79 81 void readyStateChanged(MediaPlayerPrivateRemoteIdentifier, RemoteMediaPlayerState&&); 80 void volumeChanged(WebKit::MediaPlayerPrivateRemoteIdentifier, double); 81 void muteChanged(WebKit::MediaPlayerPrivateRemoteIdentifier, bool); 82 void timeChanged(WebKit::MediaPlayerPrivateRemoteIdentifier, RemoteMediaPlayerState&&); 83 void durationChanged(WebKit::MediaPlayerPrivateRemoteIdentifier, RemoteMediaPlayerState&&); 84 void rateChanged(WebKit::MediaPlayerPrivateRemoteIdentifier, double); 85 void playbackStateChanged(WebKit::MediaPlayerPrivateRemoteIdentifier, bool); 86 void engineFailedToLoad(WebKit::MediaPlayerPrivateRemoteIdentifier, long); 87 void updateCachedState(WebKit::MediaPlayerPrivateRemoteIdentifier, RemoteMediaPlayerState&&); 88 void characteristicChanged(WebKit::MediaPlayerPrivateRemoteIdentifier, bool hasAudio, bool hasVideo, WebCore::MediaPlayerEnums::MovieLoadType); 89 void sizeChanged(WebKit::MediaPlayerPrivateRemoteIdentifier, WebCore::FloatSize); 82 void volumeChanged(MediaPlayerPrivateRemoteIdentifier, double); 83 void muteChanged(MediaPlayerPrivateRemoteIdentifier, bool); 84 void timeChanged(MediaPlayerPrivateRemoteIdentifier, RemoteMediaPlayerState&&); 85 void durationChanged(MediaPlayerPrivateRemoteIdentifier, RemoteMediaPlayerState&&); 86 void rateChanged(MediaPlayerPrivateRemoteIdentifier, double); 87 void playbackStateChanged(MediaPlayerPrivateRemoteIdentifier, bool); 88 void engineFailedToLoad(MediaPlayerPrivateRemoteIdentifier, long); 89 void updateCachedState(MediaPlayerPrivateRemoteIdentifier, RemoteMediaPlayerState&&); 90 void characteristicChanged(MediaPlayerPrivateRemoteIdentifier, bool hasAudio, bool hasVideo, WebCore::MediaPlayerEnums::MovieLoadType); 91 void sizeChanged(MediaPlayerPrivateRemoteIdentifier, WebCore::FloatSize); 92 void addRemoteAudioTrack(MediaPlayerPrivateRemoteIdentifier, TrackPrivateRemoteIdentifier, TrackPrivateRemoteConfiguration&&); 93 void removeRemoteAudioTrack(MediaPlayerPrivateRemoteIdentifier, TrackPrivateRemoteIdentifier); 94 void remoteAudioTrackConfigurationChanged(MediaPlayerPrivateRemoteIdentifier, TrackPrivateRemoteIdentifier, TrackPrivateRemoteConfiguration&&); 90 95 91 96 void requestResource(MediaPlayerPrivateRemoteIdentifier, RemoteMediaResourceIdentifier, WebCore::ResourceRequest&&, WebCore::PlatformMediaResourceLoader::LoadOptions, CompletionHandler<void()>&&); -
trunk/Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.messages.in
r254098 r254454 38 38 SizeChanged(WebKit::MediaPlayerPrivateRemoteIdentifier id, WebCore::FloatSize naturalSize) 39 39 40 AddRemoteAudioTrack(WebKit::MediaPlayerPrivateRemoteIdentifier playerID, WebKit::TrackPrivateRemoteIdentifier trackID, struct WebKit::TrackPrivateRemoteConfiguration configuration) 41 RemoveRemoteAudioTrack(WebKit::MediaPlayerPrivateRemoteIdentifier playerID, WebKit::TrackPrivateRemoteIdentifier trackID) 42 RemoteAudioTrackConfigurationChanged(WebKit::MediaPlayerPrivateRemoteIdentifier playerID, WebKit::TrackPrivateRemoteIdentifier trackID, struct WebKit::TrackPrivateRemoteConfiguration configuration) 43 40 44 RequestResource(WebKit::MediaPlayerPrivateRemoteIdentifier mediaPlayerPrivateRemoteIdentifier, WebKit::RemoteMediaResourceIdentifier remoteMediaResourceIdentifier, WebCore::ResourceRequest request, enum:uint8_t WebCore::PlatformMediaResourceLoader::LoadOptions options) -> () Async 41 45 RemoveResource(WebKit::MediaPlayerPrivateRemoteIdentifier mediaPlayerPrivateRemoteIdentifier, WebKit::RemoteMediaResourceIdentifier remoteMediaResourceIdentifier) -
trunk/Source/WebKit/WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp
r254050 r254454 29 29 #if USE(LIBWEBRTC) && PLATFORM(COCOA) && ENABLE(GPU_PROCESS) 30 30 31 #include "DataReference.h" 31 32 #include "GPUProcessConnection.h" 32 33 #include "LibWebRTCCodecsProxyMessages.h" 33 #include "SharedBufferDataReference.h"34 34 #include "WebProcess.h" 35 35 #include <WebCore/LibWebRTCMacros.h> … … 42 42 43 43 namespace WebKit { 44 using namespace WebCore; 44 45 45 46 static webrtc::WebKitVideoDecoder createVideoDecoder(const webrtc::SdpVideoFormat& format) -
trunk/Source/WebKit/WebProcess/WebCoreSupport/ios/WebPreviewLoaderClient.cpp
r251765 r254454 30 30 31 31 #include "Logging.h" 32 #include "WebPage.h" 32 33 #include "WebPageProxyMessages.h" 33 34 #include "WebProcess.h"
Note: See TracChangeset
for help on using the changeset viewer.