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

Side by Side Diff: media/base/android/media_player_bridge.cc

Issue 643353002: Listen to the audio focus event for MSE/EME (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase 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') | media/base/android/media_player_listener.h » ('j') | 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 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 user_agent_(user_agent), 43 user_agent_(user_agent),
44 hide_url_log_(hide_url_log), 44 hide_url_log_(hide_url_log),
45 width_(0), 45 width_(0),
46 height_(0), 46 height_(0),
47 can_pause_(true), 47 can_pause_(true),
48 can_seek_forward_(true), 48 can_seek_forward_(true),
49 can_seek_backward_(true), 49 can_seek_backward_(true),
50 volume_(-1.0), 50 volume_(-1.0),
51 allow_credentials_(allow_credentials), 51 allow_credentials_(allow_credentials),
52 weak_factory_(this) { 52 weak_factory_(this) {
53 listener_.reset(new MediaPlayerListener(base::MessageLoopProxy::current(),
54 weak_factory_.GetWeakPtr()));
55 } 53 }
56 54
57 MediaPlayerBridge::~MediaPlayerBridge() { 55 MediaPlayerBridge::~MediaPlayerBridge() {
58 if (!j_media_player_bridge_.is_null()) { 56 if (!j_media_player_bridge_.is_null()) {
59 JNIEnv* env = base::android::AttachCurrentThread(); 57 JNIEnv* env = base::android::AttachCurrentThread();
60 CHECK(env); 58 CHECK(env);
61 Java_MediaPlayerBridge_destroy(env, j_media_player_bridge_.obj()); 59 Java_MediaPlayerBridge_destroy(env, j_media_player_bridge_.obj());
62 } 60 }
63 Release(); 61 Release();
64 } 62 }
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 void MediaPlayerBridge::CreateJavaMediaPlayerBridge() { 94 void MediaPlayerBridge::CreateJavaMediaPlayerBridge() {
97 JNIEnv* env = base::android::AttachCurrentThread(); 95 JNIEnv* env = base::android::AttachCurrentThread();
98 CHECK(env); 96 CHECK(env);
99 97
100 j_media_player_bridge_.Reset(Java_MediaPlayerBridge_create( 98 j_media_player_bridge_.Reset(Java_MediaPlayerBridge_create(
101 env, reinterpret_cast<intptr_t>(this))); 99 env, reinterpret_cast<intptr_t>(this)));
102 100
103 if (volume_ >= 0) 101 if (volume_ >= 0)
104 SetVolume(volume_); 102 SetVolume(volume_);
105 103
106 SetMediaPlayerListener(); 104 AttachListener(j_media_player_bridge_.obj());
107 } 105 }
108 106
109 void MediaPlayerBridge::SetJavaMediaPlayerBridge( 107 void MediaPlayerBridge::SetJavaMediaPlayerBridge(
110 jobject j_media_player_bridge) { 108 jobject j_media_player_bridge) {
111 JNIEnv* env = base::android::AttachCurrentThread(); 109 JNIEnv* env = base::android::AttachCurrentThread();
112 CHECK(env); 110 CHECK(env);
113 111
114 j_media_player_bridge_.Reset(env, j_media_player_bridge); 112 j_media_player_bridge_.Reset(env, j_media_player_bridge);
115 } 113 }
116 114
117 base::android::ScopedJavaLocalRef<jobject> MediaPlayerBridge:: 115 base::android::ScopedJavaLocalRef<jobject> MediaPlayerBridge::
118 GetJavaMediaPlayerBridge() { 116 GetJavaMediaPlayerBridge() {
119 base::android::ScopedJavaLocalRef<jobject> j_bridge( 117 base::android::ScopedJavaLocalRef<jobject> j_bridge(
120 j_media_player_bridge_); 118 j_media_player_bridge_);
121 return j_bridge; 119 return j_bridge;
122 } 120 }
123 121
124 void MediaPlayerBridge::SetMediaPlayerListener() {
125 jobject j_context = base::android::GetApplicationContext();
126 DCHECK(j_context);
127
128 listener_->CreateMediaPlayerListener(j_context, j_media_player_bridge_.obj());
129 }
130
131 void MediaPlayerBridge::SetDuration(base::TimeDelta duration) { 122 void MediaPlayerBridge::SetDuration(base::TimeDelta duration) {
132 duration_ = duration; 123 duration_ = duration;
133 } 124 }
134 125
135 void MediaPlayerBridge::SetVideoSurface(gfx::ScopedJavaSurface surface) { 126 void MediaPlayerBridge::SetVideoSurface(gfx::ScopedJavaSurface surface) {
136 if (j_media_player_bridge_.is_null()) { 127 if (j_media_player_bridge_.is_null()) {
137 if (surface.IsEmpty()) 128 if (surface.IsEmpty())
138 return; 129 return;
139 Prepare(); 130 Prepare();
140 } 131 }
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after
379 370
380 time_update_timer_.Stop(); 371 time_update_timer_.Stop();
381 if (prepared_) 372 if (prepared_)
382 pending_seek_ = GetCurrentTime(); 373 pending_seek_ = GetCurrentTime();
383 prepared_ = false; 374 prepared_ = false;
384 pending_play_ = false; 375 pending_play_ = false;
385 SetVideoSurface(gfx::ScopedJavaSurface()); 376 SetVideoSurface(gfx::ScopedJavaSurface());
386 JNIEnv* env = base::android::AttachCurrentThread(); 377 JNIEnv* env = base::android::AttachCurrentThread();
387 Java_MediaPlayerBridge_release(env, j_media_player_bridge_.obj()); 378 Java_MediaPlayerBridge_release(env, j_media_player_bridge_.obj());
388 j_media_player_bridge_.Reset(); 379 j_media_player_bridge_.Reset();
389 listener_->ReleaseMediaPlayerListenerResources(); 380 DetachListener();
390 } 381 }
391 382
392 void MediaPlayerBridge::SetVolume(double volume) { 383 void MediaPlayerBridge::SetVolume(double volume) {
393 if (j_media_player_bridge_.is_null()) { 384 if (j_media_player_bridge_.is_null()) {
394 volume_ = volume; 385 volume_ = volume;
395 return; 386 return;
396 } 387 }
397 388
398 JNIEnv* env = base::android::AttachCurrentThread(); 389 JNIEnv* env = base::android::AttachCurrentThread();
399 CHECK(env); 390 CHECK(env);
400 Java_MediaPlayerBridge_setVolume( 391 Java_MediaPlayerBridge_setVolume(
401 env, j_media_player_bridge_.obj(), volume); 392 env, j_media_player_bridge_.obj(), volume);
402 } 393 }
403 394
404 void MediaPlayerBridge::OnVideoSizeChanged(int width, int height) { 395 void MediaPlayerBridge::OnVideoSizeChanged(int width, int height) {
405 width_ = width; 396 width_ = width;
406 height_ = height; 397 height_ = height;
407 manager()->OnVideoSizeChanged(player_id(), width, height); 398 MediaPlayerAndroid::OnVideoSizeChanged(width, height);
408 }
409
410 void MediaPlayerBridge::OnMediaError(int error_type) {
411 manager()->OnError(player_id(), error_type);
412 }
413
414 void MediaPlayerBridge::OnBufferingUpdate(int percent) {
415 manager()->OnBufferingUpdate(player_id(), percent);
416 } 399 }
417 400
418 void MediaPlayerBridge::OnPlaybackComplete() { 401 void MediaPlayerBridge::OnPlaybackComplete() {
419 time_update_timer_.Stop(); 402 time_update_timer_.Stop();
420 manager()->OnPlaybackComplete(player_id()); 403 MediaPlayerAndroid::OnPlaybackComplete();
421 } 404 }
422 405
423 void MediaPlayerBridge::OnMediaInterrupted() { 406 void MediaPlayerBridge::OnMediaInterrupted() {
424 time_update_timer_.Stop(); 407 time_update_timer_.Stop();
425 manager()->OnMediaInterrupted(player_id()); 408 MediaPlayerAndroid::OnMediaInterrupted();
426 }
427
428 void MediaPlayerBridge::OnSeekComplete() {
429 manager()->OnSeekComplete(player_id(), GetCurrentTime());
430 } 409 }
431 410
432 void MediaPlayerBridge::OnMediaPrepared() { 411 void MediaPlayerBridge::OnMediaPrepared() {
433 if (j_media_player_bridge_.is_null()) 412 if (j_media_player_bridge_.is_null())
434 return; 413 return;
435 414
436 prepared_ = true; 415 prepared_ = true;
437 duration_ = GetDuration(); 416 duration_ = GetDuration();
438 417
439 // If media player was recovered from a saved state, consume all the pending 418 // If media player was recovered from a saved state, consume all the pending
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
539 518
540 GURL MediaPlayerBridge::GetUrl() { 519 GURL MediaPlayerBridge::GetUrl() {
541 return url_; 520 return url_;
542 } 521 }
543 522
544 GURL MediaPlayerBridge::GetFirstPartyForCookies() { 523 GURL MediaPlayerBridge::GetFirstPartyForCookies() {
545 return first_party_for_cookies_; 524 return first_party_for_cookies_;
546 } 525 }
547 526
548 } // namespace media 527 } // namespace media
OLDNEW
« no previous file with comments | « media/base/android/media_player_bridge.h ('k') | media/base/android/media_player_listener.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698