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

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: additional rebase conflict Created 7 years, 7 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 #if !defined(GOOGLE_TV) 32 #if !defined(GOOGLE_TV)
33 // static 33 // static
34 MediaPlayerBridge* MediaPlayerBridge::Create( 34 MediaPlayerBridge* MediaPlayerBridge::Create(
35 int player_id, 35 int player_id,
36 const GURL& url, 36 const GURL& url,
37 bool is_media_source, 37 bool is_media_source,
38 const GURL& first_party_for_cookies, 38 const GURL& first_party_for_cookies,
39 MediaResourceGetter* resource_getter,
40 bool hide_url_log, 39 bool hide_url_log,
41 MediaPlayerBridgeManager* manager, 40 MediaPlayerManager* manager,
42 const MediaErrorCB& media_error_cb, 41 const MediaErrorCB& media_error_cb,
43 const VideoSizeChangedCB& video_size_changed_cb, 42 const VideoSizeChangedCB& video_size_changed_cb,
44 const BufferingUpdateCB& buffering_update_cb, 43 const BufferingUpdateCB& buffering_update_cb,
45 const MediaMetadataChangedCB& media_prepared_cb, 44 const MediaMetadataChangedCB& media_prepared_cb,
46 const PlaybackCompleteCB& playback_complete_cb, 45 const PlaybackCompleteCB& playback_complete_cb,
47 const SeekCompleteCB& seek_complete_cb, 46 const SeekCompleteCB& seek_complete_cb,
48 const TimeUpdateCB& time_update_cb, 47 const TimeUpdateCB& time_update_cb,
49 const MediaInterruptedCB& media_interrupted_cb) { 48 const MediaInterruptedCB& media_interrupted_cb) {
50 LOG_IF(WARNING, is_media_source) << "MSE is not supported"; 49 LOG_IF(WARNING, is_media_source) << "MSE is not supported";
51 return new MediaPlayerBridge( 50 return new MediaPlayerBridge(
52 player_id, 51 player_id,
53 url, 52 url,
54 first_party_for_cookies, 53 first_party_for_cookies,
55 resource_getter,
56 hide_url_log, 54 hide_url_log,
57 manager, 55 manager,
58 media_error_cb, 56 media_error_cb,
59 video_size_changed_cb, 57 video_size_changed_cb,
60 buffering_update_cb, 58 buffering_update_cb,
61 media_prepared_cb, 59 media_prepared_cb,
62 playback_complete_cb, 60 playback_complete_cb,
63 seek_complete_cb, 61 seek_complete_cb,
64 time_update_cb, 62 time_update_cb,
65 media_interrupted_cb); 63 media_interrupted_cb);
66 } 64 }
67 #endif 65 #endif
68 66
69 MediaPlayerBridge::MediaPlayerBridge( 67 MediaPlayerBridge::MediaPlayerBridge(
70 int player_id, 68 int player_id,
71 const GURL& url, 69 const GURL& url,
72 const GURL& first_party_for_cookies, 70 const GURL& first_party_for_cookies,
73 MediaResourceGetter* resource_getter,
74 bool hide_url_log, 71 bool hide_url_log,
75 MediaPlayerBridgeManager* manager, 72 MediaPlayerManager* manager,
76 const MediaErrorCB& media_error_cb, 73 const MediaErrorCB& media_error_cb,
77 const VideoSizeChangedCB& video_size_changed_cb, 74 const VideoSizeChangedCB& video_size_changed_cb,
78 const BufferingUpdateCB& buffering_update_cb, 75 const BufferingUpdateCB& buffering_update_cb,
79 const MediaMetadataChangedCB& media_metadata_changed_cb, 76 const MediaMetadataChangedCB& media_metadata_changed_cb,
80 const PlaybackCompleteCB& playback_complete_cb, 77 const PlaybackCompleteCB& playback_complete_cb,
81 const SeekCompleteCB& seek_complete_cb, 78 const SeekCompleteCB& seek_complete_cb,
82 const TimeUpdateCB& time_update_cb, 79 const TimeUpdateCB& time_update_cb,
83 const MediaInterruptedCB& media_interrupted_cb) 80 const MediaInterruptedCB& media_interrupted_cb)
84 : media_error_cb_(media_error_cb), 81 : media_error_cb_(media_error_cb),
85 video_size_changed_cb_(video_size_changed_cb), 82 video_size_changed_cb_(video_size_changed_cb),
86 buffering_update_cb_(buffering_update_cb), 83 buffering_update_cb_(buffering_update_cb),
87 media_metadata_changed_cb_(media_metadata_changed_cb), 84 media_metadata_changed_cb_(media_metadata_changed_cb),
88 playback_complete_cb_(playback_complete_cb), 85 playback_complete_cb_(playback_complete_cb),
89 seek_complete_cb_(seek_complete_cb), 86 seek_complete_cb_(seek_complete_cb),
90 media_interrupted_cb_(media_interrupted_cb), 87 media_interrupted_cb_(media_interrupted_cb),
91 time_update_cb_(time_update_cb), 88 time_update_cb_(time_update_cb),
92 player_id_(player_id), 89 player_id_(player_id),
93 prepared_(false), 90 prepared_(false),
94 pending_play_(false), 91 pending_play_(false),
95 url_(url), 92 url_(url),
96 first_party_for_cookies_(first_party_for_cookies), 93 first_party_for_cookies_(first_party_for_cookies),
97 hide_url_log_(hide_url_log), 94 hide_url_log_(hide_url_log),
98 duration_(base::TimeDelta::FromSeconds(kTemporaryDuration)), 95 duration_(base::TimeDelta::FromSeconds(kTemporaryDuration)),
99 width_(0), 96 width_(0),
100 height_(0), 97 height_(0),
101 can_pause_(true), 98 can_pause_(true),
102 can_seek_forward_(true), 99 can_seek_forward_(true),
103 can_seek_backward_(true), 100 can_seek_backward_(true),
104 manager_(manager), 101 manager_(manager),
105 resource_getter_(resource_getter),
106 weak_this_(this), 102 weak_this_(this),
107 listener_(base::MessageLoopProxy::current(), 103 listener_(base::MessageLoopProxy::current(),
108 weak_this_.GetWeakPtr()) { 104 weak_this_.GetWeakPtr()) {
109 Initialize(); 105 Initialize();
110 } 106 }
111 107
112 MediaPlayerBridge::~MediaPlayerBridge() { 108 MediaPlayerBridge::~MediaPlayerBridge() {
113 Release(); 109 Release();
114 } 110 }
115 111
116 void MediaPlayerBridge::Initialize() { 112 void MediaPlayerBridge::Initialize() {
117 if (url_.SchemeIsFile()) { 113 if (url_.SchemeIsFile()) {
118 cookies_.clear(); 114 cookies_.clear();
119 ExtractMediaMetadata(url_.spec()); 115 ExtractMediaMetadata(url_.spec());
120 return; 116 return;
121 } 117 }
122 118
119 media::MediaResourceGetter* resource_getter =
120 manager_->GetMediaResourceGetter();
121
123 if (url_.SchemeIsFileSystem()) { 122 if (url_.SchemeIsFileSystem()) {
124 cookies_.clear(); 123 cookies_.clear();
125 resource_getter_->GetPlatformPathFromFileSystemURL(url_, base::Bind( 124 resource_getter->GetPlatformPathFromFileSystemURL(url_, base::Bind(
126 &MediaPlayerBridge::ExtractMediaMetadata, weak_this_.GetWeakPtr())); 125 &MediaPlayerBridge::ExtractMediaMetadata, weak_this_.GetWeakPtr()));
127 return; 126 return;
128 } 127 }
129 128
130 resource_getter_->GetCookies(url_, first_party_for_cookies_, base::Bind( 129 resource_getter->GetCookies(url_, first_party_for_cookies_, base::Bind(
131 &MediaPlayerBridge::OnCookiesRetrieved, weak_this_.GetWeakPtr())); 130 &MediaPlayerBridge::OnCookiesRetrieved, weak_this_.GetWeakPtr()));
132 } 131 }
133 132
134 void MediaPlayerBridge::CreateMediaPlayer() { 133 void MediaPlayerBridge::CreateMediaPlayer() {
135 JNIEnv* env = base::android::AttachCurrentThread(); 134 JNIEnv* env = base::android::AttachCurrentThread();
136 CHECK(env); 135 CHECK(env);
137 136
138 j_media_player_.Reset(JNI_MediaPlayer::Java_MediaPlayer_Constructor(env)); 137 j_media_player_.Reset(JNI_MediaPlayer::Java_MediaPlayer_Constructor(env));
139 138
140 SetMediaPlayerListener(); 139 SetMediaPlayerListener();
(...skipping 24 matching lines...) Expand all
165 CHECK(env); 164 CHECK(env);
166 165
167 JNI_MediaPlayer::Java_MediaPlayer_setSurface( 166 JNI_MediaPlayer::Java_MediaPlayer_setSurface(
168 env, j_media_player_.obj(), surface); 167 env, j_media_player_.obj(), surface);
169 } 168 }
170 169
171 void MediaPlayerBridge::Prepare() { 170 void MediaPlayerBridge::Prepare() {
172 if (j_media_player_.is_null()) 171 if (j_media_player_.is_null())
173 CreateMediaPlayer(); 172 CreateMediaPlayer();
174 if (url_.SchemeIsFileSystem()) { 173 if (url_.SchemeIsFileSystem()) {
175 resource_getter_->GetPlatformPathFromFileSystemURL(url_, base::Bind( 174 manager_->GetMediaResourceGetter()->GetPlatformPathFromFileSystemURL(
176 &MediaPlayerBridge::SetDataSource, weak_this_.GetWeakPtr())); 175 url_, base::Bind(&MediaPlayerBridge::SetDataSource,
176 weak_this_.GetWeakPtr()));
177 } else { 177 } else {
178 SetDataSource(url_.spec()); 178 SetDataSource(url_.spec());
179 } 179 }
180 } 180 }
181 181
182 void MediaPlayerBridge::SetDataSource(const std::string& url) { 182 void MediaPlayerBridge::SetDataSource(const std::string& url) {
183 if (j_media_player_.is_null()) 183 if (j_media_player_.is_null())
184 return; 184 return;
185 185
186 JNIEnv* env = base::android::AttachCurrentThread(); 186 JNIEnv* env = base::android::AttachCurrentThread();
(...skipping 17 matching lines...) Expand all
204 media_error_cb_.Run(player_id_, MEDIA_ERROR_FORMAT); 204 media_error_cb_.Run(player_id_, MEDIA_ERROR_FORMAT);
205 } 205 }
206 } 206 }
207 207
208 void MediaPlayerBridge::OnCookiesRetrieved(const std::string& cookies) { 208 void MediaPlayerBridge::OnCookiesRetrieved(const std::string& cookies) {
209 cookies_ = cookies; 209 cookies_ = cookies;
210 ExtractMediaMetadata(url_.spec()); 210 ExtractMediaMetadata(url_.spec());
211 } 211 }
212 212
213 void MediaPlayerBridge::ExtractMediaMetadata(const std::string& url) { 213 void MediaPlayerBridge::ExtractMediaMetadata(const std::string& url) {
214 resource_getter_->ExtractMediaMetadata( 214 manager_->GetMediaResourceGetter()->ExtractMediaMetadata(
215 url, cookies_, base::Bind(&MediaPlayerBridge::OnMediaMetadataExtracted, 215 url, cookies_, base::Bind(&MediaPlayerBridge::OnMediaMetadataExtracted,
216 weak_this_.GetWeakPtr())); 216 weak_this_.GetWeakPtr()));
217 } 217 }
218 218
219 void MediaPlayerBridge::OnMediaMetadataExtracted( 219 void MediaPlayerBridge::OnMediaMetadataExtracted(
220 base::TimeDelta duration, int width, int height, bool success) { 220 base::TimeDelta duration, int width, int height, bool success) {
221 if (success) { 221 if (success) {
222 duration_ = duration; 222 duration_ = duration;
223 width_ = width; 223 width_ = width;
224 height_ = height; 224 height_ = height;
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
459 NOTREACHED() << "Unexpected ipc received"; 459 NOTREACHED() << "Unexpected ipc received";
460 } 460 }
461 461
462 void MediaPlayerBridge::ReadFromDemuxerAck( 462 void MediaPlayerBridge::ReadFromDemuxerAck(
463 const MediaPlayerHostMsg_ReadFromDemuxerAck_Params& params) { 463 const MediaPlayerHostMsg_ReadFromDemuxerAck_Params& params) {
464 NOTREACHED() << "Unexpected ipc received"; 464 NOTREACHED() << "Unexpected ipc received";
465 } 465 }
466 #endif 466 #endif
467 467
468 } // namespace media 468 } // namespace media
OLDNEW
« no previous file with comments | « media/base/android/media_player_bridge.h ('k') | media/base/android/media_player_bridge_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698