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: media/base/android/media_player_bridge.cc

Issue 664413002: [Merge to M39][Cast, Android] Skip initial seek to 0 on fling (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@2171
Patch Set: Created 6 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 | « media/base/android/media_player_bridge.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 (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 "media/base/android/media_player_bridge.h" 5 #include "media/base/android/media_player_bridge.h"
6 6
7 #include "base/android/jni_android.h" 7 #include "base/android/jni_android.h"
8 #include "base/android/jni_string.h" 8 #include "base/android/jni_string.h"
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 19 matching lines...) Expand all
30 MediaPlayerManager* manager, 30 MediaPlayerManager* manager,
31 const RequestMediaResourcesCB& request_media_resources_cb, 31 const RequestMediaResourcesCB& request_media_resources_cb,
32 const GURL& frame_url, 32 const GURL& frame_url,
33 bool allow_credentials) 33 bool allow_credentials)
34 : MediaPlayerAndroid(player_id, 34 : MediaPlayerAndroid(player_id,
35 manager, 35 manager,
36 request_media_resources_cb, 36 request_media_resources_cb,
37 frame_url), 37 frame_url),
38 prepared_(false), 38 prepared_(false),
39 pending_play_(false), 39 pending_play_(false),
40 should_seek_on_prepare_(false),
40 url_(url), 41 url_(url),
41 first_party_for_cookies_(first_party_for_cookies), 42 first_party_for_cookies_(first_party_for_cookies),
42 user_agent_(user_agent), 43 user_agent_(user_agent),
43 hide_url_log_(hide_url_log), 44 hide_url_log_(hide_url_log),
44 width_(0), 45 width_(0),
45 height_(0), 46 height_(0),
46 can_pause_(true), 47 can_pause_(true),
47 can_seek_forward_(true), 48 can_seek_forward_(true),
48 can_seek_backward_(true), 49 can_seek_backward_(true),
49 volume_(-1.0), 50 volume_(-1.0),
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after
330 if (!prepared_) 331 if (!prepared_)
331 return height_; 332 return height_;
332 JNIEnv* env = base::android::AttachCurrentThread(); 333 JNIEnv* env = base::android::AttachCurrentThread();
333 return Java_MediaPlayerBridge_getVideoHeight( 334 return Java_MediaPlayerBridge_getVideoHeight(
334 env, j_media_player_bridge_.obj()); 335 env, j_media_player_bridge_.obj());
335 } 336 }
336 337
337 void MediaPlayerBridge::SeekTo(base::TimeDelta timestamp) { 338 void MediaPlayerBridge::SeekTo(base::TimeDelta timestamp) {
338 // Record the time to seek when OnMediaPrepared() is called. 339 // Record the time to seek when OnMediaPrepared() is called.
339 pending_seek_ = timestamp; 340 pending_seek_ = timestamp;
341 should_seek_on_prepare_ = true;
340 342
341 if (j_media_player_bridge_.is_null()) 343 if (j_media_player_bridge_.is_null())
342 Prepare(); 344 Prepare();
343 else if (prepared_) 345 else if (prepared_)
344 SeekInternal(timestamp); 346 SeekInternal(timestamp);
345 } 347 }
346 348
347 base::TimeDelta MediaPlayerBridge::GetCurrentTime() { 349 base::TimeDelta MediaPlayerBridge::GetCurrentTime() {
348 if (!prepared_) 350 if (!prepared_)
349 return pending_seek_; 351 return pending_seek_;
(...skipping 10 matching lines...) Expand all
360 return base::TimeDelta::FromMilliseconds( 362 return base::TimeDelta::FromMilliseconds(
361 Java_MediaPlayerBridge_getDuration( 363 Java_MediaPlayerBridge_getDuration(
362 env, j_media_player_bridge_.obj())); 364 env, j_media_player_bridge_.obj()));
363 } 365 }
364 366
365 void MediaPlayerBridge::Release() { 367 void MediaPlayerBridge::Release() {
366 if (j_media_player_bridge_.is_null()) 368 if (j_media_player_bridge_.is_null())
367 return; 369 return;
368 370
369 time_update_timer_.Stop(); 371 time_update_timer_.Stop();
370 if (prepared_) 372 if (prepared_) {
371 pending_seek_ = GetCurrentTime(); 373 pending_seek_ = GetCurrentTime();
374 should_seek_on_prepare_ = true;
375 }
376
372 prepared_ = false; 377 prepared_ = false;
373 pending_play_ = false; 378 pending_play_ = false;
374 SetVideoSurface(gfx::ScopedJavaSurface()); 379 SetVideoSurface(gfx::ScopedJavaSurface());
375 JNIEnv* env = base::android::AttachCurrentThread(); 380 JNIEnv* env = base::android::AttachCurrentThread();
376 Java_MediaPlayerBridge_release(env, j_media_player_bridge_.obj()); 381 Java_MediaPlayerBridge_release(env, j_media_player_bridge_.obj());
377 j_media_player_bridge_.Reset(); 382 j_media_player_bridge_.Reset();
378 DetachListener(); 383 DetachListener();
379 } 384 }
380 385
381 void MediaPlayerBridge::SetVolume(double volume) { 386 void MediaPlayerBridge::SetVolume(double volume) {
(...skipping 26 matching lines...) Expand all
408 413
409 void MediaPlayerBridge::OnMediaPrepared() { 414 void MediaPlayerBridge::OnMediaPrepared() {
410 if (j_media_player_bridge_.is_null()) 415 if (j_media_player_bridge_.is_null())
411 return; 416 return;
412 417
413 prepared_ = true; 418 prepared_ = true;
414 duration_ = GetDuration(); 419 duration_ = GetDuration();
415 420
416 // If media player was recovered from a saved state, consume all the pending 421 // If media player was recovered from a saved state, consume all the pending
417 // events. 422 // events.
418 PendingSeekInternal(pending_seek_); 423 if (should_seek_on_prepare_) {
424 PendingSeekInternal(pending_seek_);
425 pending_seek_ = base::TimeDelta::FromMilliseconds(0);
426 should_seek_on_prepare_ = false;
427 }
419 428
420 if (pending_play_) { 429 if (pending_play_) {
421 StartInternal(); 430 StartInternal();
422 pending_play_ = false; 431 pending_play_ = false;
423 } 432 }
424 433
425 UpdateAllowedOperations(); 434 UpdateAllowedOperations();
426 manager()->OnMediaMetadataChanged( 435 manager()->OnMediaMetadataChanged(
427 player_id(), duration_, width_, height_, true); 436 player_id(), duration_, width_, height_, true);
428 } 437 }
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
516 525
517 GURL MediaPlayerBridge::GetUrl() { 526 GURL MediaPlayerBridge::GetUrl() {
518 return url_; 527 return url_;
519 } 528 }
520 529
521 GURL MediaPlayerBridge::GetFirstPartyForCookies() { 530 GURL MediaPlayerBridge::GetFirstPartyForCookies() {
522 return first_party_for_cookies_; 531 return first_party_for_cookies_;
523 } 532 }
524 533
525 } // namespace media 534 } // namespace media
OLDNEW
« no previous file with comments | « media/base/android/media_player_bridge.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698