Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(101)

Side by Side Diff: webkit/media/android/webmediaplayer_android.cc

Issue 13688004: Location/size change notification when external rendering is enabled (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase & added a missing ifdef guard Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "webkit/media/android/webmediaplayer_android.h" 5 #include "webkit/media/android/webmediaplayer_android.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/files/file_path.h" 8 #include "base/files/file_path.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 WebMediaSource* media_source, 87 WebMediaSource* media_source,
88 CORSMode cors_mode) { 88 CORSMode cors_mode) {
89 NOTIMPLEMENTED(); 89 NOTIMPLEMENTED();
90 } 90 }
91 91
92 void WebMediaPlayerAndroid::cancelLoad() { 92 void WebMediaPlayerAndroid::cancelLoad() {
93 NOTIMPLEMENTED(); 93 NOTIMPLEMENTED();
94 } 94 }
95 95
96 void WebMediaPlayerAndroid::play() { 96 void WebMediaPlayerAndroid::play() {
97 #if defined(GOOGLE_TV)
97 if (hasVideo() && needs_external_surface_) { 98 if (hasVideo() && needs_external_surface_) {
98 DCHECK(!needs_establish_peer_); 99 DCHECK(!needs_establish_peer_);
99 RequestExternalSurface(); 100 RequestExternalSurface();
100 } 101 }
102 #endif
101 if (hasVideo() && needs_establish_peer_) 103 if (hasVideo() && needs_establish_peer_)
102 EstablishSurfaceTexturePeer(); 104 EstablishSurfaceTexturePeer();
103 105
104 PlayInternal(); 106 PlayInternal();
105 is_playing_ = true; 107 is_playing_ = true;
106 } 108 }
107 109
108 void WebMediaPlayerAndroid::pause() { 110 void WebMediaPlayerAndroid::pause() {
109 PauseInternal(); 111 PauseInternal();
110 is_playing_ = false; 112 is_playing_ = false;
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 break; 380 break;
379 } 381 }
380 client_->repaint(); 382 client_->repaint();
381 } 383 }
382 384
383 void WebMediaPlayerAndroid::OnVideoSizeChanged(int width, int height) { 385 void WebMediaPlayerAndroid::OnVideoSizeChanged(int width, int height) {
384 has_size_info_ = true; 386 has_size_info_ = true;
385 if (natural_size_.width == width && natural_size_.height == height) 387 if (natural_size_.width == width && natural_size_.height == height)
386 return; 388 return;
387 389
390 #if defined(GOOGLE_TV)
388 static bool has_switch = CommandLine::ForCurrentProcess()->HasSwitch( 391 static bool has_switch = CommandLine::ForCurrentProcess()->HasSwitch(
389 switches::kUseExternalVideoSurfaceThresholdInPixels); 392 switches::kUseExternalVideoSurfaceThresholdInPixels);
390 static int threshold = 0; 393 static int threshold = 0;
391 static bool parsed_arg = 394 static bool parsed_arg =
392 has_switch && 395 has_switch &&
393 base::StringToInt( 396 base::StringToInt(
394 CommandLine::ForCurrentProcess()->GetSwitchValueASCII( 397 CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
395 switches::kUseExternalVideoSurfaceThresholdInPixels), 398 switches::kUseExternalVideoSurfaceThresholdInPixels),
396 &threshold); 399 &threshold);
397 400
398 if (parsed_arg && threshold <= width * height) { 401 if (parsed_arg && threshold <= width * height) {
399 needs_external_surface_ = true; 402 needs_external_surface_ = true;
400 SetNeedsEstablishPeer(false); 403 SetNeedsEstablishPeer(false);
401 if (!paused()) 404 if (!paused())
402 RequestExternalSurface(); 405 RequestExternalSurface();
403 } 406 }
407 #endif
404 408
405 natural_size_.width = width; 409 natural_size_.width = width;
406 natural_size_.height = height; 410 natural_size_.height = height;
407 ReallocateVideoFrame(); 411 ReallocateVideoFrame();
408 } 412 }
409 413
410 void WebMediaPlayerAndroid::UpdateNetworkState( 414 void WebMediaPlayerAndroid::UpdateNetworkState(
411 WebMediaPlayer::NetworkState state) { 415 WebMediaPlayer::NetworkState state) {
412 network_state_ = state; 416 network_state_ = state;
413 client_->networkStateChanged(); 417 client_->networkStateChanged();
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
518 } 522 }
519 523
520 void WebMediaPlayerAndroid::SetNeedsEstablishPeer(bool needs_establish_peer) { 524 void WebMediaPlayerAndroid::SetNeedsEstablishPeer(bool needs_establish_peer) {
521 needs_establish_peer_ = needs_establish_peer; 525 needs_establish_peer_ = needs_establish_peer;
522 } 526 }
523 527
524 void WebMediaPlayerAndroid::UpdatePlayingState(bool is_playing) { 528 void WebMediaPlayerAndroid::UpdatePlayingState(bool is_playing) {
525 is_playing_ = is_playing; 529 is_playing_ = is_playing;
526 } 530 }
527 531
532 #if defined(GOOGLE_TV)
533 bool WebMediaPlayerAndroid::RetrieveGeometryChange(gfx::RectF* rect) {
534 if (!video_weblayer_)
535 return false;
536
537 // Compute the geometry of video frame layer.
538 cc::Layer* layer = video_weblayer_->layer();
539 rect->set_size(layer->bounds());
540 while (layer) {
541 rect->Offset(layer->position().OffsetFromOrigin());
542 layer = layer->parent();
543 }
544
545 // Return false when the geometry hasn't been changed from the last time.
546 if (last_computed_rect_ == *rect)
547 return false;
548
549 // Store the changed geometry information when it is actually changed.
550 last_computed_rect_ = *rect;
551 return true;
552 }
553 #endif
554
528 } // namespace webkit_media 555 } // namespace webkit_media
OLDNEW
« no previous file with comments | « webkit/media/android/webmediaplayer_android.h ('k') | webkit/media/android/webmediaplayer_impl_android.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698