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

Side by Side Diff: content/renderer/media/android/webmediaplayer_android.cc

Issue 23797004: Sets the media element network state to idle until playback is requested. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebased Created 7 years, 2 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
« no previous file with comments | « content/renderer/media/android/webmediaplayer_android.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/command_line.h" 10 #include "base/command_line.h"
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 pending_seek_(false), 76 pending_seek_(false),
77 seeking_(false), 77 seeking_(false),
78 did_loading_progress_(false), 78 did_loading_progress_(false),
79 manager_(manager), 79 manager_(manager),
80 network_state_(WebMediaPlayer::NetworkStateEmpty), 80 network_state_(WebMediaPlayer::NetworkStateEmpty),
81 ready_state_(WebMediaPlayer::ReadyStateHaveNothing), 81 ready_state_(WebMediaPlayer::ReadyStateHaveNothing),
82 texture_id_(0), 82 texture_id_(0),
83 texture_mailbox_sync_point_(0), 83 texture_mailbox_sync_point_(0),
84 stream_id_(0), 84 stream_id_(0),
85 is_playing_(false), 85 is_playing_(false),
86 playing_started_(false),
86 needs_establish_peer_(true), 87 needs_establish_peer_(true),
87 stream_texture_proxy_initialized_(false), 88 stream_texture_proxy_initialized_(false),
88 has_size_info_(false), 89 has_size_info_(false),
89 has_media_metadata_(false), 90 has_media_metadata_(false),
90 has_media_info_(false), 91 has_media_info_(false),
91 stream_texture_factory_(factory), 92 stream_texture_factory_(factory),
92 needs_external_surface_(false), 93 needs_external_surface_(false),
93 video_frame_provider_client_(NULL), 94 video_frame_provider_client_(NULL),
94 #if defined(GOOGLE_TV) 95 #if defined(GOOGLE_TV)
95 external_surface_threshold_(-1), 96 external_surface_threshold_(-1),
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
293 UpdateNetworkState(WebMediaPlayer::NetworkStateNetworkError); 294 UpdateNetworkState(WebMediaPlayer::NetworkStateNetworkError);
294 return; 295 return;
295 } 296 }
296 297
297 has_media_info_ = true; 298 has_media_info_ = true;
298 if (has_media_metadata_ && 299 if (has_media_metadata_ &&
299 ready_state_ != WebMediaPlayer::ReadyStateHaveEnoughData) { 300 ready_state_ != WebMediaPlayer::ReadyStateHaveEnoughData) {
300 UpdateReadyState(WebMediaPlayer::ReadyStateHaveMetadata); 301 UpdateReadyState(WebMediaPlayer::ReadyStateHaveMetadata);
301 UpdateReadyState(WebMediaPlayer::ReadyStateHaveEnoughData); 302 UpdateReadyState(WebMediaPlayer::ReadyStateHaveEnoughData);
302 } 303 }
304 // Android doesn't start fetching resources until an implementation-defined
305 // event (e.g. playback request) occurs. Sets the network state to IDLE
306 // if play is not requested yet.
307 if (!playing_started_)
308 UpdateNetworkState(WebMediaPlayer::NetworkStateIdle);
303 } 309 }
304 310
305 void WebMediaPlayerAndroid::play() { 311 void WebMediaPlayerAndroid::play() {
306 #if defined(GOOGLE_TV) 312 #if defined(GOOGLE_TV)
307 if (hasVideo() && needs_external_surface_ && 313 if (hasVideo() && needs_external_surface_ &&
308 !manager_->IsInFullscreen(frame_)) { 314 !manager_->IsInFullscreen(frame_)) {
309 DCHECK(!needs_establish_peer_); 315 DCHECK(!needs_establish_peer_);
310 proxy_->RequestExternalSurface(player_id_, last_computed_rect_); 316 proxy_->RequestExternalSurface(player_id_, last_computed_rect_);
311 } 317 }
312 if (audio_renderer_ && paused()) 318 if (audio_renderer_ && paused())
313 audio_renderer_->Play(); 319 audio_renderer_->Play();
314 #endif 320 #endif
315 if (hasVideo() && needs_establish_peer_) 321 if (hasVideo() && needs_establish_peer_)
316 EstablishSurfaceTexturePeer(); 322 EstablishSurfaceTexturePeer();
317 323
318 if (paused()) 324 if (paused())
319 proxy_->Start(player_id_); 325 proxy_->Start(player_id_);
320 UpdatePlayingState(true); 326 UpdatePlayingState(true);
327 UpdateNetworkState(WebMediaPlayer::NetworkStateLoading);
328 playing_started_ = true;
321 } 329 }
322 330
323 void WebMediaPlayerAndroid::pause() { 331 void WebMediaPlayerAndroid::pause() {
324 pause(true); 332 pause(true);
325 } 333 }
326 334
327 void WebMediaPlayerAndroid::pause(bool is_media_related_action) { 335 void WebMediaPlayerAndroid::pause(bool is_media_related_action) {
328 #if defined(GOOGLE_TV) 336 #if defined(GOOGLE_TV)
329 if (audio_renderer_ && !paused()) 337 if (audio_renderer_ && !paused())
330 audio_renderer_->Pause(); 338 audio_renderer_->Pause();
(...skipping 897 matching lines...) Expand 10 before | Expand all | Expand 10 after
1228 1236
1229 void WebMediaPlayerAndroid::exitFullscreen() { 1237 void WebMediaPlayerAndroid::exitFullscreen() {
1230 proxy_->ExitFullscreen(player_id_); 1238 proxy_->ExitFullscreen(player_id_);
1231 } 1239 }
1232 1240
1233 bool WebMediaPlayerAndroid::canEnterFullscreen() const { 1241 bool WebMediaPlayerAndroid::canEnterFullscreen() const {
1234 return manager_->CanEnterFullscreen(frame_); 1242 return manager_->CanEnterFullscreen(frame_);
1235 } 1243 }
1236 1244
1237 } // namespace content 1245 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/media/android/webmediaplayer_android.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698