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

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

Issue 14314020: Rename MediaPlayerBridgeManager to MediaPlayerManager (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 8 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 | Annotate | Revision Log
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"
11 #include "base/message_loop_proxy.h" 11 #include "base/message_loop_proxy.h"
12 #include "jni/MediaPlayerBridge_jni.h" 12 #include "jni/MediaPlayerBridge_jni.h"
13 #include "jni/MediaPlayer_jni.h" 13 #include "jni/MediaPlayer_jni.h"
14 #include "media/base/android/media_player_bridge_manager.h" 14 #include "media/base/android/media_player_manager.h"
15 #include "media/base/android/media_resource_getter.h" 15 #include "media/base/android/media_resource_getter.h"
16 16
17 using base::android::ConvertUTF8ToJavaString; 17 using base::android::ConvertUTF8ToJavaString;
18 using base::android::ScopedJavaLocalRef; 18 using base::android::ScopedJavaLocalRef;
19 19
20 // Time update happens every 250ms. 20 // Time update happens every 250ms.
21 static const int kTimeUpdateInterval = 250; 21 static const int kTimeUpdateInterval = 250;
22 22
23 // Android MediaMetadataRetriever may fail to extract the metadata from the 23 // Android MediaMetadataRetriever may fail to extract the metadata from the
24 // media under some circumstances. This makes the user unable to perform 24 // media under some circumstances. This makes the user unable to perform
25 // seek. To solve this problem, we use a temporary duration of 100 seconds when 25 // seek. To solve this problem, we use a temporary duration of 100 seconds when
26 // the duration is unknown. And we scale the seek position later when duration 26 // the duration is unknown. And we scale the seek position later when duration
27 // is available. 27 // is available.
28 static const int kTemporaryDuration = 100; 28 static const int kTemporaryDuration = 100;
29 29
30 namespace media { 30 namespace media {
31 31
32 MediaPlayerBridge::MediaPlayerBridge( 32 MediaPlayerBridge::MediaPlayerBridge(
33 int player_id, 33 int player_id,
34 const GURL& url, 34 const GURL& url,
35 const GURL& first_party_for_cookies, 35 const GURL& first_party_for_cookies,
36 MediaResourceGetter* resource_getter,
37 bool hide_url_log, 36 bool hide_url_log,
38 MediaPlayerBridgeManager* manager, 37 MediaPlayerManager* manager,
39 const MediaErrorCB& media_error_cb, 38 const MediaErrorCB& media_error_cb,
40 const VideoSizeChangedCB& video_size_changed_cb, 39 const VideoSizeChangedCB& video_size_changed_cb,
41 const BufferingUpdateCB& buffering_update_cb, 40 const BufferingUpdateCB& buffering_update_cb,
42 const MediaMetadataChangedCB& media_metadata_changed_cb, 41 const MediaMetadataChangedCB& media_metadata_changed_cb,
43 const PlaybackCompleteCB& playback_complete_cb, 42 const PlaybackCompleteCB& playback_complete_cb,
44 const SeekCompleteCB& seek_complete_cb, 43 const SeekCompleteCB& seek_complete_cb,
45 const TimeUpdateCB& time_update_cb, 44 const TimeUpdateCB& time_update_cb,
46 const MediaInterruptedCB& media_interrupted_cb) 45 const MediaInterruptedCB& media_interrupted_cb)
47 : media_error_cb_(media_error_cb), 46 : media_error_cb_(media_error_cb),
48 video_size_changed_cb_(video_size_changed_cb), 47 video_size_changed_cb_(video_size_changed_cb),
49 buffering_update_cb_(buffering_update_cb), 48 buffering_update_cb_(buffering_update_cb),
50 media_metadata_changed_cb_(media_metadata_changed_cb), 49 media_metadata_changed_cb_(media_metadata_changed_cb),
51 playback_complete_cb_(playback_complete_cb), 50 playback_complete_cb_(playback_complete_cb),
52 seek_complete_cb_(seek_complete_cb), 51 seek_complete_cb_(seek_complete_cb),
53 media_interrupted_cb_(media_interrupted_cb), 52 media_interrupted_cb_(media_interrupted_cb),
54 time_update_cb_(time_update_cb), 53 time_update_cb_(time_update_cb),
55 player_id_(player_id), 54 player_id_(player_id),
56 prepared_(false), 55 prepared_(false),
57 pending_play_(false), 56 pending_play_(false),
58 url_(url), 57 url_(url),
59 first_party_for_cookies_(first_party_for_cookies), 58 first_party_for_cookies_(first_party_for_cookies),
60 hide_url_log_(hide_url_log), 59 hide_url_log_(hide_url_log),
61 duration_(base::TimeDelta::FromSeconds(kTemporaryDuration)), 60 duration_(base::TimeDelta::FromSeconds(kTemporaryDuration)),
62 width_(0), 61 width_(0),
63 height_(0), 62 height_(0),
64 can_pause_(true), 63 can_pause_(true),
65 can_seek_forward_(true), 64 can_seek_forward_(true),
66 can_seek_backward_(true), 65 can_seek_backward_(true),
67 manager_(manager), 66 manager_(manager),
68 resource_getter_(resource_getter),
69 ALLOW_THIS_IN_INITIALIZER_LIST(weak_this_(this)), 67 ALLOW_THIS_IN_INITIALIZER_LIST(weak_this_(this)),
70 listener_(base::MessageLoopProxy::current(), 68 listener_(base::MessageLoopProxy::current(),
71 weak_this_.GetWeakPtr()) { 69 weak_this_.GetWeakPtr()) {
72 Initialize(); 70 Initialize();
73 } 71 }
74 72
75 MediaPlayerBridge::~MediaPlayerBridge() { 73 MediaPlayerBridge::~MediaPlayerBridge() {
76 Release(); 74 Release();
77 } 75 }
78 76
79 void MediaPlayerBridge::Initialize() { 77 void MediaPlayerBridge::Initialize() {
80 if (url_.SchemeIsFile()) { 78 if (url_.SchemeIsFile()) {
81 cookies_.clear(); 79 cookies_.clear();
82 ExtractMediaMetadata(url_.spec()); 80 ExtractMediaMetadata(url_.spec());
83 return; 81 return;
84 } 82 }
85 83
84 media::MediaResourceGetter* resource_getter =
85 manager_->GetMediaResourceGetter();
86
86 if (url_.SchemeIsFileSystem()) { 87 if (url_.SchemeIsFileSystem()) {
87 cookies_.clear(); 88 cookies_.clear();
88 resource_getter_->GetPlatformPathFromFileSystemURL(url_, base::Bind( 89 resource_getter->GetPlatformPathFromFileSystemURL(url_, base::Bind(
89 &MediaPlayerBridge::ExtractMediaMetadata, weak_this_.GetWeakPtr())); 90 &MediaPlayerBridge::ExtractMediaMetadata, weak_this_.GetWeakPtr()));
90 return; 91 return;
91 } 92 }
92 93
93 resource_getter_->GetCookies(url_, first_party_for_cookies_, base::Bind( 94 resource_getter->GetCookies(url_, first_party_for_cookies_, base::Bind(
94 &MediaPlayerBridge::OnCookiesRetrieved, weak_this_.GetWeakPtr())); 95 &MediaPlayerBridge::OnCookiesRetrieved, weak_this_.GetWeakPtr()));
95 } 96 }
96 97
97 void MediaPlayerBridge::CreateMediaPlayer() { 98 void MediaPlayerBridge::CreateMediaPlayer() {
98 JNIEnv* env = base::android::AttachCurrentThread(); 99 JNIEnv* env = base::android::AttachCurrentThread();
99 CHECK(env); 100 CHECK(env);
100 101
101 j_media_player_.Reset(JNI_MediaPlayer::Java_MediaPlayer_Constructor(env)); 102 j_media_player_.Reset(JNI_MediaPlayer::Java_MediaPlayer_Constructor(env));
102 103
103 jobject j_context = base::android::GetApplicationContext(); 104 jobject j_context = base::android::GetApplicationContext();
(...skipping 13 matching lines...) Expand all
117 CHECK(env); 118 CHECK(env);
118 119
119 JNI_MediaPlayer::Java_MediaPlayer_setSurface( 120 JNI_MediaPlayer::Java_MediaPlayer_setSurface(
120 env, j_media_player_.obj(), surface); 121 env, j_media_player_.obj(), surface);
121 } 122 }
122 123
123 void MediaPlayerBridge::Prepare() { 124 void MediaPlayerBridge::Prepare() {
124 if (j_media_player_.is_null()) 125 if (j_media_player_.is_null())
125 CreateMediaPlayer(); 126 CreateMediaPlayer();
126 if (url_.SchemeIsFileSystem()) { 127 if (url_.SchemeIsFileSystem()) {
127 resource_getter_->GetPlatformPathFromFileSystemURL(url_, base::Bind( 128 manager_->GetMediaResourceGetter()->GetPlatformPathFromFileSystemURL(
128 &MediaPlayerBridge::SetDataSource, weak_this_.GetWeakPtr())); 129 url_, base::Bind(&MediaPlayerBridge::SetDataSource,
130 weak_this_.GetWeakPtr()));
129 } else { 131 } else {
130 SetDataSource(url_.spec()); 132 SetDataSource(url_.spec());
131 } 133 }
132 } 134 }
133 135
134 void MediaPlayerBridge::SetDataSource(const std::string& url) { 136 void MediaPlayerBridge::SetDataSource(const std::string& url) {
135 if (j_media_player_.is_null()) 137 if (j_media_player_.is_null())
136 return; 138 return;
137 139
138 JNIEnv* env = base::android::AttachCurrentThread(); 140 JNIEnv* env = base::android::AttachCurrentThread();
(...skipping 18 matching lines...) Expand all
157 media_error_cb_.Run(player_id_, MEDIA_ERROR_FORMAT); 159 media_error_cb_.Run(player_id_, MEDIA_ERROR_FORMAT);
158 } 160 }
159 } 161 }
160 162
161 void MediaPlayerBridge::OnCookiesRetrieved(const std::string& cookies) { 163 void MediaPlayerBridge::OnCookiesRetrieved(const std::string& cookies) {
162 cookies_ = cookies; 164 cookies_ = cookies;
163 ExtractMediaMetadata(url_.spec()); 165 ExtractMediaMetadata(url_.spec());
164 } 166 }
165 167
166 void MediaPlayerBridge::ExtractMediaMetadata(const std::string& url) { 168 void MediaPlayerBridge::ExtractMediaMetadata(const std::string& url) {
167 resource_getter_->ExtractMediaMetadata( 169 manager_->GetMediaResourceGetter()->ExtractMediaMetadata(
168 url, cookies_, base::Bind(&MediaPlayerBridge::OnMediaMetadataExtracted, 170 url, cookies_, base::Bind(&MediaPlayerBridge::OnMediaMetadataExtracted,
169 weak_this_.GetWeakPtr())); 171 weak_this_.GetWeakPtr()));
170 } 172 }
171 173
172 void MediaPlayerBridge::OnMediaMetadataExtracted( 174 void MediaPlayerBridge::OnMediaMetadataExtracted(
173 base::TimeDelta duration, int width, int height, bool success) { 175 base::TimeDelta duration, int width, int height, bool success) {
174 if (success) { 176 if (success) {
175 duration_ = duration; 177 duration_ = duration;
176 width_ = width; 178 width_ = width;
177 height_ = height; 179 height_ = height;
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 393
392 bool MediaPlayerBridge::RegisterMediaPlayerBridge(JNIEnv* env) { 394 bool MediaPlayerBridge::RegisterMediaPlayerBridge(JNIEnv* env) {
393 bool ret = RegisterNativesImpl(env); 395 bool ret = RegisterNativesImpl(env);
394 DCHECK(g_MediaPlayerBridge_clazz); 396 DCHECK(g_MediaPlayerBridge_clazz);
395 if (ret) 397 if (ret)
396 ret = JNI_MediaPlayer::RegisterNativesImpl(env); 398 ret = JNI_MediaPlayer::RegisterNativesImpl(env);
397 return ret; 399 return ret;
398 } 400 }
399 401
400 } // namespace media 402 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698