| 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 336 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 347 const int duration_ms = | 347 const int duration_ms = |
| 348 Java_MediaPlayerBridge_getDuration(env, j_media_player_bridge_.obj()); | 348 Java_MediaPlayerBridge_getDuration(env, j_media_player_bridge_.obj()); |
| 349 return duration_ms < 0 ? media::kInfiniteDuration() | 349 return duration_ms < 0 ? media::kInfiniteDuration() |
| 350 : base::TimeDelta::FromMilliseconds(duration_ms); | 350 : base::TimeDelta::FromMilliseconds(duration_ms); |
| 351 } | 351 } |
| 352 | 352 |
| 353 void MediaPlayerBridge::Release() { | 353 void MediaPlayerBridge::Release() { |
| 354 if (j_media_player_bridge_.is_null()) | 354 if (j_media_player_bridge_.is_null()) |
| 355 return; | 355 return; |
| 356 | 356 |
| 357 SetAudible(false); | |
| 358 | |
| 359 time_update_timer_.Stop(); | 357 time_update_timer_.Stop(); |
| 360 if (prepared_) { | 358 if (prepared_) { |
| 361 pending_seek_ = GetCurrentTime(); | 359 pending_seek_ = GetCurrentTime(); |
| 362 should_seek_on_prepare_ = true; | 360 should_seek_on_prepare_ = true; |
| 363 } | 361 } |
| 364 | 362 |
| 365 prepared_ = false; | 363 prepared_ = false; |
| 366 pending_play_ = false; | 364 pending_play_ = false; |
| 367 SetVideoSurface(gfx::ScopedJavaSurface()); | 365 SetVideoSurface(gfx::ScopedJavaSurface()); |
| 368 JNIEnv* env = base::android::AttachCurrentThread(); | 366 JNIEnv* env = base::android::AttachCurrentThread(); |
| 369 Java_MediaPlayerBridge_release(env, j_media_player_bridge_.obj()); | 367 Java_MediaPlayerBridge_release(env, j_media_player_bridge_.obj()); |
| 370 j_media_player_bridge_.Reset(); | 368 j_media_player_bridge_.Reset(); |
| 371 DetachListener(); | 369 DetachListener(); |
| 372 } | 370 } |
| 373 | 371 |
| 374 void MediaPlayerBridge::SetVolume(double volume) { | 372 void MediaPlayerBridge::SetVolume(double volume) { |
| 375 volume_ = volume; | 373 if (j_media_player_bridge_.is_null()) { |
| 376 | 374 volume_ = volume; |
| 377 if (j_media_player_bridge_.is_null()) | |
| 378 return; | 375 return; |
| 376 } |
| 379 | 377 |
| 380 JNIEnv* env = base::android::AttachCurrentThread(); | 378 JNIEnv* env = base::android::AttachCurrentThread(); |
| 381 CHECK(env); | 379 CHECK(env); |
| 382 | 380 |
| 383 // Update the audible state if we are playing. | |
| 384 jboolean is_playing = Java_MediaPlayerBridge_isPlaying( | |
| 385 env, j_media_player_bridge_.obj()); | |
| 386 if (is_playing) | |
| 387 SetAudible(volume_ > 0); | |
| 388 | |
| 389 Java_MediaPlayerBridge_setVolume( | 381 Java_MediaPlayerBridge_setVolume( |
| 390 env, j_media_player_bridge_.obj(), volume_); | 382 env, j_media_player_bridge_.obj(), volume); |
| 391 } | 383 } |
| 392 | 384 |
| 393 void MediaPlayerBridge::OnVideoSizeChanged(int width, int height) { | 385 void MediaPlayerBridge::OnVideoSizeChanged(int width, int height) { |
| 394 width_ = width; | 386 width_ = width; |
| 395 height_ = height; | 387 height_ = height; |
| 396 MediaPlayerAndroid::OnVideoSizeChanged(width, height); | 388 MediaPlayerAndroid::OnVideoSizeChanged(width, height); |
| 397 } | 389 } |
| 398 | 390 |
| 399 void MediaPlayerBridge::OnPlaybackComplete() { | 391 void MediaPlayerBridge::OnPlaybackComplete() { |
| 400 SetAudible(false); | |
| 401 time_update_timer_.Stop(); | 392 time_update_timer_.Stop(); |
| 402 MediaPlayerAndroid::OnPlaybackComplete(); | 393 MediaPlayerAndroid::OnPlaybackComplete(); |
| 403 } | 394 } |
| 404 | 395 |
| 405 void MediaPlayerBridge::OnMediaInterrupted() { | 396 void MediaPlayerBridge::OnMediaInterrupted() { |
| 406 SetAudible(false); | |
| 407 time_update_timer_.Stop(); | 397 time_update_timer_.Stop(); |
| 408 MediaPlayerAndroid::OnMediaInterrupted(); | 398 MediaPlayerAndroid::OnMediaInterrupted(); |
| 409 } | 399 } |
| 410 | 400 |
| 411 void MediaPlayerBridge::OnMediaPrepared() { | 401 void MediaPlayerBridge::OnMediaPrepared() { |
| 412 if (j_media_player_bridge_.is_null()) | 402 if (j_media_player_bridge_.is_null()) |
| 413 return; | 403 return; |
| 414 | 404 |
| 415 prepared_ = true; | 405 prepared_ = true; |
| 416 duration_ = GetDuration(); | 406 duration_ = GetDuration(); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 461 } | 451 } |
| 462 | 452 |
| 463 JNIEnv* env = base::android::AttachCurrentThread(); | 453 JNIEnv* env = base::android::AttachCurrentThread(); |
| 464 Java_MediaPlayerBridge_start(env, j_media_player_bridge_.obj()); | 454 Java_MediaPlayerBridge_start(env, j_media_player_bridge_.obj()); |
| 465 if (!time_update_timer_.IsRunning()) { | 455 if (!time_update_timer_.IsRunning()) { |
| 466 time_update_timer_.Start( | 456 time_update_timer_.Start( |
| 467 FROM_HERE, | 457 FROM_HERE, |
| 468 base::TimeDelta::FromMilliseconds(kTimeUpdateInterval), | 458 base::TimeDelta::FromMilliseconds(kTimeUpdateInterval), |
| 469 this, &MediaPlayerBridge::OnTimeUpdateTimerFired); | 459 this, &MediaPlayerBridge::OnTimeUpdateTimerFired); |
| 470 } | 460 } |
| 471 | |
| 472 SetAudible(volume_ > 0); | |
| 473 } | 461 } |
| 474 | 462 |
| 475 void MediaPlayerBridge::PauseInternal() { | 463 void MediaPlayerBridge::PauseInternal() { |
| 476 SetAudible(false); | |
| 477 | |
| 478 JNIEnv* env = base::android::AttachCurrentThread(); | 464 JNIEnv* env = base::android::AttachCurrentThread(); |
| 479 Java_MediaPlayerBridge_pause(env, j_media_player_bridge_.obj()); | 465 Java_MediaPlayerBridge_pause(env, j_media_player_bridge_.obj()); |
| 480 time_update_timer_.Stop(); | 466 time_update_timer_.Stop(); |
| 481 } | 467 } |
| 482 | 468 |
| 483 void MediaPlayerBridge::PendingSeekInternal(const base::TimeDelta& time) { | 469 void MediaPlayerBridge::PendingSeekInternal(const base::TimeDelta& time) { |
| 484 SeekInternal(GetCurrentTime(), time); | 470 SeekInternal(GetCurrentTime(), time); |
| 485 } | 471 } |
| 486 | 472 |
| 487 bool MediaPlayerBridge::SeekInternal(base::TimeDelta current_time, | 473 bool MediaPlayerBridge::SeekInternal(base::TimeDelta current_time, |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 539 | 525 |
| 540 GURL MediaPlayerBridge::GetUrl() { | 526 GURL MediaPlayerBridge::GetUrl() { |
| 541 return url_; | 527 return url_; |
| 542 } | 528 } |
| 543 | 529 |
| 544 GURL MediaPlayerBridge::GetFirstPartyForCookies() { | 530 GURL MediaPlayerBridge::GetFirstPartyForCookies() { |
| 545 return first_party_for_cookies_; | 531 return first_party_for_cookies_; |
| 546 } | 532 } |
| 547 | 533 |
| 548 } // namespace media | 534 } // namespace media |
| OLD | NEW |