OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |