Changeset 197807 in webkit
- Timestamp:
- Mar 8, 2016, 3:16:29 PM (11 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r197804 r197807 1 2016-03-08 Ada Chan <adachan@apple.com> 2 3 Enable API related to the video fullscreen layer in MediaPlayerPrivateMediaStreamAVFObjC for Mac. 4 https://bugs.webkit.org/show_bug.cgi?id=153239 5 6 Reviewed by Eric Carlson. 7 8 Reuse VideoFullscreenLayerManager to manage moving the video layer between the fullscreen 9 layer and the inline layer depending on the current presentation mode. 10 11 * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h: 12 * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm: 13 (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::MediaPlayerPrivateMediaStreamAVFObjC): 14 Create m_videoFullscreenLayerManager. 15 (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::platformLayer): 16 Return the video inline layer from the VideoFullscreenLayerManager. 17 (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::createPreviewLayers): 18 Call VideoFullscreenLayerManager::setVideoLayer() with the m_videoBackgroundLayer. To make sure 19 the preview layer (a sublayer of m_videoBackgroundLayer) resize according to aspect ratio, set 20 its contents gravity to kCAGravityResizeAspect. Also, set its autoresizing mask so it'll resize 21 with its superlayer. 22 (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::setVideoFullscreenLayer): 23 Call VideoFullscreenLayerManager::setVideoFullscreenLayer(). 24 (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::setVideoFullscreenFrame): 25 Call VideoFullscreenLayerManager::setVideoFullscreenFrame(). 26 1 27 2016-03-08 Myles C. Maxfield <mmaxfield@apple.com> 2 28 -
trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h
r195951 r197807 46 46 class MediaSourcePrivateClient; 47 47 class VideoTrackPrivateMediaStream; 48 49 #if PLATFORM(MAC) && ENABLE(VIDEO_PRESENTATION_MODE) 50 class VideoFullscreenLayerManager; 51 #endif 48 52 49 53 class MediaPlayerPrivateMediaStreamAVFObjC : public MediaPlayerPrivateInterface, public MediaStreamPrivate::Observer { … … 156 160 void didRemoveTrack(MediaStreamTrackPrivate&) override; 157 161 162 #if PLATFORM(MAC) && ENABLE(VIDEO_PRESENTATION_MODE) 163 void setVideoFullscreenLayer(PlatformLayer*) override; 164 void setVideoFullscreenFrame(FloatRect) override; 165 #endif 166 158 167 MediaPlayer* m_player { nullptr }; 159 168 WeakPtrFactory<MediaPlayerPrivateMediaStreamAVFObjC> m_weakPtrFactory; … … 176 185 bool m_haveEverPlayed { false }; 177 186 bool m_ended { false }; 187 188 #if PLATFORM(MAC) && ENABLE(VIDEO_PRESENTATION_MODE) 189 std::unique_ptr<VideoFullscreenLayerManager> m_videoFullscreenLayerManager; 190 #endif 178 191 }; 179 192 -
trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm
r195951 r197807 43 43 #import <wtf/NeverDestroyed.h> 44 44 45 #if PLATFORM(MAC) && ENABLE(VIDEO_PRESENTATION_MODE) 46 #import "VideoFullscreenLayerManager.h" 47 #endif 48 45 49 #pragma mark - Soft Linking 46 50 … … 58 62 , m_weakPtrFactory(this) 59 63 , m_clock(Clock::create()) 64 #if PLATFORM(MAC) && ENABLE(VIDEO_PRESENTATION_MODE) 65 , m_videoFullscreenLayerManager(VideoFullscreenLayerManager::create()) 66 #endif 60 67 { 61 68 LOG(Media, "MediaPlayerPrivateMediaStreamAVFObjC::MediaPlayerPrivateMediaStreamAVFObjC(%p)", this); … … 154 161 return nullptr; 155 162 163 #if PLATFORM(MAC) && ENABLE(VIDEO_PRESENTATION_MODE) 164 return m_videoFullscreenLayerManager->videoInlineLayer(); 165 #else 156 166 return m_videoBackgroundLayer.get(); 167 #endif 157 168 } 158 169 … … 392 403 m_videoBackgroundLayer = adoptNS([[CALayer alloc] init]); 393 404 m_videoBackgroundLayer.get().name = @"MediaPlayerPrivateMediaStreamAVFObjC preview background layer"; 405 406 #if PLATFORM(MAC) && ENABLE(VIDEO_PRESENTATION_MODE) 407 m_videoFullscreenLayerManager->setVideoLayer(m_videoBackgroundLayer.get(), snappedIntRect(m_player->client().mediaPlayerContentBoxRect()).size()); 408 #endif 394 409 } 395 410 … … 397 412 m_previewLayer = m_mediaStreamPrivate->platformLayer(); 398 413 if (m_previewLayer) { 399 m_previewLayer.get().contentsGravity = kCAGravityResize ;414 m_previewLayer.get().contentsGravity = kCAGravityResizeAspect; 400 415 m_previewLayer.get().anchorPoint = CGPointZero; 401 416 if (!m_playing) … … 403 418 404 419 [m_videoBackgroundLayer addSublayer:m_previewLayer.get()]; 420 #if PLATFORM(MAC) 421 [m_previewLayer setFrame:[m_videoBackgroundLayer bounds]]; 422 [m_previewLayer setAutoresizingMask:(kCALayerWidthSizable | kCALayerHeightSizable)]; 423 #endif 405 424 } 406 425 } … … 454 473 updateTracks(); 455 474 } 475 476 #if PLATFORM(MAC) && ENABLE(VIDEO_PRESENTATION_MODE) 477 void MediaPlayerPrivateMediaStreamAVFObjC::setVideoFullscreenLayer(PlatformLayer *videoFullscreenLayer) 478 { 479 m_videoFullscreenLayerManager->setVideoFullscreenLayer(videoFullscreenLayer); 480 } 481 482 void MediaPlayerPrivateMediaStreamAVFObjC::setVideoFullscreenFrame(FloatRect frame) 483 { 484 m_videoFullscreenLayerManager->setVideoFullscreenFrame(frame); 485 } 486 #endif 456 487 457 488 template <typename RefT, typename PassRefT>
Note:
See TracChangeset
for help on using the changeset viewer.