Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/renderer/media/android/webmediaplayer_android.h" | 5 #include "content/renderer/media/android/webmediaplayer_android.h" |
| 6 | 6 |
| 7 #include <limits> | 7 #include <limits> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/callback_helpers.h" | 10 #include "base/callback_helpers.h" |
| (...skipping 644 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 655 // may play without a surface texture. When we finally get the valid video | 655 // may play without a surface texture. When we finally get the valid video |
| 656 // size here, we should call EstablishSurfaceTexturePeer() if it has not been | 656 // size here, we should call EstablishSurfaceTexturePeer() if it has not been |
| 657 // previously called. | 657 // previously called. |
| 658 if (!paused() && needs_establish_peer_) | 658 if (!paused() && needs_establish_peer_) |
| 659 EstablishSurfaceTexturePeer(); | 659 EstablishSurfaceTexturePeer(); |
| 660 #endif // defined(VIDEO_HOLE) | 660 #endif // defined(VIDEO_HOLE) |
| 661 | 661 |
| 662 natural_size_.width = width; | 662 natural_size_.width = width; |
| 663 natural_size_.height = height; | 663 natural_size_.height = height; |
| 664 ReallocateVideoFrame(); | 664 ReallocateVideoFrame(); |
| 665 CreateWebLayerIfNeeded(); | 665 |
| 666 // Lazily allocate compositing layer. | |
| 667 if (!video_weblayer_) { | |
|
scherkus (not reviewing)
2014/03/20 17:17:45
we don't need to check hasVideo() as it would alwa
| |
| 668 video_weblayer_.reset( | |
| 669 new webkit::WebLayerImpl(cc::VideoLayer::Create(this))); | |
| 670 client_->setWebLayer(video_weblayer_); | |
| 671 } | |
| 672 | |
| 666 // TODO(qinmin): This is a hack. We need the media element to stop showing the | 673 // TODO(qinmin): This is a hack. We need the media element to stop showing the |
| 667 // poster image by forcing it to call setDisplayMode(video). Should move the | 674 // poster image by forcing it to call setDisplayMode(video). Should move the |
| 668 // logic into HTMLMediaElement.cpp. | 675 // logic into HTMLMediaElement.cpp. |
| 669 client_->timeChanged(); | 676 client_->timeChanged(); |
| 670 } | 677 } |
| 671 | 678 |
| 672 void WebMediaPlayerAndroid::OnTimeUpdate(const base::TimeDelta& current_time) { | 679 void WebMediaPlayerAndroid::OnTimeUpdate(const base::TimeDelta& current_time) { |
| 673 DCHECK(main_thread_checker_.CalledOnValidThread()); | 680 DCHECK(main_thread_checker_.CalledOnValidThread()); |
| 674 current_time_ = current_time.InSecondsF(); | 681 current_time_ = current_time.InSecondsF(); |
| 675 } | 682 } |
| (...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 948 media::VideoFrame::ReleaseMailboxCB(), | 955 media::VideoFrame::ReleaseMailboxCB(), |
| 949 natural_size_, | 956 natural_size_, |
| 950 gfx::Rect(natural_size_), | 957 gfx::Rect(natural_size_), |
| 951 natural_size_, | 958 natural_size_, |
| 952 base::TimeDelta(), | 959 base::TimeDelta(), |
| 953 VideoFrame::ReadPixelsCB()); | 960 VideoFrame::ReadPixelsCB()); |
| 954 SetCurrentFrameInternal(new_frame); | 961 SetCurrentFrameInternal(new_frame); |
| 955 } | 962 } |
| 956 } | 963 } |
| 957 | 964 |
| 958 void WebMediaPlayerAndroid::CreateWebLayerIfNeeded() { | |
| 959 if (!hasVideo() || video_weblayer_ || !client_->needsWebLayerForVideo()) | |
| 960 return; | |
| 961 video_weblayer_.reset(new webkit::WebLayerImpl(cc::VideoLayer::Create(this))); | |
| 962 client_->setWebLayer(video_weblayer_.get()); | |
| 963 } | |
| 964 | |
| 965 void WebMediaPlayerAndroid::SetVideoFrameProviderClient( | 965 void WebMediaPlayerAndroid::SetVideoFrameProviderClient( |
| 966 cc::VideoFrameProvider::Client* client) { | 966 cc::VideoFrameProvider::Client* client) { |
| 967 // This is called from both the main renderer thread and the compositor | 967 // This is called from both the main renderer thread and the compositor |
| 968 // thread (when the main thread is blocked). | 968 // thread (when the main thread is blocked). |
| 969 if (video_frame_provider_client_) | 969 if (video_frame_provider_client_) |
| 970 video_frame_provider_client_->StopUsingProvider(); | 970 video_frame_provider_client_->StopUsingProvider(); |
| 971 video_frame_provider_client_ = client; | 971 video_frame_provider_client_ = client; |
| 972 | 972 |
| 973 // Set the callback target when a frame is produced. | 973 // Set the callback target when a frame is produced. |
| 974 if (stream_texture_proxy_) | 974 if (stream_texture_proxy_) |
| (...skipping 464 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1439 | 1439 |
| 1440 void WebMediaPlayerAndroid::exitFullscreen() { | 1440 void WebMediaPlayerAndroid::exitFullscreen() { |
| 1441 manager_->ExitFullscreen(player_id_); | 1441 manager_->ExitFullscreen(player_id_); |
| 1442 } | 1442 } |
| 1443 | 1443 |
| 1444 bool WebMediaPlayerAndroid::canEnterFullscreen() const { | 1444 bool WebMediaPlayerAndroid::canEnterFullscreen() const { |
| 1445 return manager_->CanEnterFullscreen(frame_); | 1445 return manager_->CanEnterFullscreen(frame_); |
| 1446 } | 1446 } |
| 1447 | 1447 |
| 1448 } // namespace content | 1448 } // namespace content |
| OLD | NEW |