| Index: content/renderer/media/android/webmediaplayer_android.cc
|
| diff --git a/content/renderer/media/android/webmediaplayer_android.cc b/content/renderer/media/android/webmediaplayer_android.cc
|
| index 6a0d2fc7a1a723312fec80f6f8c97013b0ad9611..be5b6dca522b4f7ee531cb89eecaa63dd7b4644e 100644
|
| --- a/content/renderer/media/android/webmediaplayer_android.cc
|
| +++ b/content/renderer/media/android/webmediaplayer_android.cc
|
| @@ -139,12 +139,13 @@ WebMediaPlayerAndroid::WebMediaPlayerAndroid(
|
| external_surface_threshold_ = -1;
|
| }
|
| }
|
| +#endif // defined(GOOGLE_TV)
|
|
|
| +#if defined(VIDEO_HOLE)
|
| // Defer stream texture creation until we are sure it's necessary.
|
| - stream_id_ = 0;
|
| needs_establish_peer_ = false;
|
| current_frame_ = VideoFrame::CreateBlackFrame(gfx::Size(1, 1));
|
| -#endif
|
| +#endif // defined(VIDEO_HOLE)
|
| TryCreateStreamTextureProxyIfNeeded();
|
|
|
| if (blink::WebRuntimeFeatures::isPrefixedEncryptedMediaEnabled()) {
|
| @@ -324,15 +325,17 @@ void WebMediaPlayerAndroid::DidLoadMediaInfo(
|
| }
|
|
|
| void WebMediaPlayerAndroid::play() {
|
| -#if defined(GOOGLE_TV)
|
| +#if defined(VIDEO_HOLE)
|
| if (hasVideo() && needs_external_surface_ &&
|
| !manager_->IsInFullscreen(frame_)) {
|
| DCHECK(!needs_establish_peer_);
|
| manager_->RequestExternalSurface(player_id_, last_computed_rect_);
|
| }
|
| +#endif // defined(VIDEO_HOLE)
|
| +#if defined(GOOGLE_TV)
|
| if (audio_renderer_ && paused())
|
| audio_renderer_->Play();
|
| -#endif
|
| +#endif // defined(GOOGLE_TV)
|
|
|
| TryCreateStreamTextureProxyIfNeeded();
|
| if (hasVideo() && needs_establish_peer_)
|
| @@ -726,11 +729,15 @@ void WebMediaPlayerAndroid::OnVideoSizeChanged(int width, int height) {
|
| if (natural_size_.width == width && natural_size_.height == height)
|
| return;
|
|
|
| +#if defined(VIDEO_HOLE)
|
| + bool has_surface_size_restriction = false;
|
| #if defined(GOOGLE_TV)
|
| - if ((external_surface_threshold_ >= 0 &&
|
| - external_surface_threshold_ <= width * height) ||
|
| - // Use H/W surface for MSE as the content is protected.
|
| - media_source_delegate_) {
|
| + has_surface_size_restriction = external_surface_threshold_ >= 0 &&
|
| + external_surface_threshold_ <= width * height;
|
| +#endif // defined(GOOGLE_TV)
|
| + // Use H/W surface for MSE as the content might be protected.
|
| + // TODO(qinmin): Change this so that only EME needs the H/W surface
|
| + if (media_source_delegate_ || has_surface_size_restriction) {
|
| needs_external_surface_ = true;
|
| if (!paused() && !manager_->IsInFullscreen(frame_))
|
| manager_->RequestExternalSurface(player_id_, last_computed_rect_);
|
| @@ -743,7 +750,7 @@ void WebMediaPlayerAndroid::OnVideoSizeChanged(int width, int height) {
|
| EstablishSurfaceTexturePeer();
|
| }
|
| }
|
| -#endif
|
| +#endif // defined(VIDEO_HOLE)
|
|
|
| natural_size_.width = width;
|
| natural_size_.height = height;
|
| @@ -790,10 +797,10 @@ void WebMediaPlayerAndroid::OnDidExitFullscreen() {
|
| if (!paused() && needs_establish_peer_)
|
| EstablishSurfaceTexturePeer();
|
|
|
| -#if defined(GOOGLE_TV)
|
| +#if defined(VIDEO_HOLE)
|
| if (!paused() && needs_external_surface_)
|
| manager_->RequestExternalSurface(player_id_, last_computed_rect_);
|
| -#endif
|
| +#endif // defined(VIDEO_HOLE)
|
|
|
| frame_->view()->willExitFullScreen();
|
| frame_->view()->didExitFullScreen();
|
| @@ -859,9 +866,9 @@ void WebMediaPlayerAndroid::OnPlayerReleased() {
|
| if (!needs_external_surface_)
|
| needs_establish_peer_ = true;
|
|
|
| -#if defined(GOOGLE_TV)
|
| +#if defined(VIDEO_HOLE)
|
| last_computed_rect_ = gfx::RectF();
|
| -#endif
|
| +#endif // defined(VIDEO_HOLE)
|
| }
|
|
|
| void WebMediaPlayerAndroid::ReleaseMediaResources() {
|
| @@ -1008,8 +1015,8 @@ void WebMediaPlayerAndroid::DrawRemotePlaybackIcon() {
|
|
|
| void WebMediaPlayerAndroid::ReallocateVideoFrame() {
|
| if (needs_external_surface_) {
|
| - // VideoFrame::CreateHoleFrame is only defined under GOOGLE_TV.
|
| -#if defined(GOOGLE_TV)
|
| + // VideoFrame::CreateHoleFrame is only defined under VIDEO_HOLE.
|
| +#if defined(VIDEO_HOLE)
|
| if (!natural_size_.isEmpty()) {
|
| scoped_refptr<VideoFrame> new_frame =
|
| VideoFrame::CreateHoleFrame(natural_size_);
|
| @@ -1018,8 +1025,8 @@ void WebMediaPlayerAndroid::ReallocateVideoFrame() {
|
| client_->repaint();
|
| }
|
| #else
|
| - NOTIMPLEMENTED() << "Hole punching not supported outside of Google TV";
|
| -#endif
|
| + NOTIMPLEMENTED() << "Hole punching not supported without VIDEO_HOLE flag";
|
| +#endif // defined(VIDEO_HOLE)
|
| } else if (!is_remote_ && texture_id_) {
|
| scoped_refptr<VideoFrame> new_frame = VideoFrame::WrapNativeTexture(
|
| make_scoped_ptr(new VideoFrame::MailboxHolder(
|
| @@ -1145,7 +1152,7 @@ void WebMediaPlayerAndroid::UpdatePlayingState(bool is_playing) {
|
| delegate_->DidPause(this);
|
| }
|
|
|
| -#if defined(GOOGLE_TV)
|
| +#if defined(VIDEO_HOLE)
|
| bool WebMediaPlayerAndroid::RetrieveGeometryChange(gfx::RectF* rect) {
|
| if (!video_weblayer_)
|
| return false;
|
|
|