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

Side by Side Diff: content/renderer/media/android/renderer_media_player_manager.cc

Issue 1567123002: Support CAST+WMPI on android (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: suspend/resume cleanup Created 4 years, 11 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "content/renderer/media/android/renderer_media_player_manager.h" 5 #include "content/renderer/media/android/renderer_media_player_manager.h"
6 6
7 #include "content/common/media/media_player_messages_android.h" 7 #include "content/common/media/media_player_messages_android.h"
8 #include "content/public/common/renderer_preferences.h" 8 #include "content/public/common/renderer_preferences.h"
9 #include "content/renderer/media/android/webmediaplayer_android.h" 9 #include "content/renderer/media/android/webmediaplayer_android.h"
10 #include "content/renderer/media/cdm/renderer_cdm_manager.h" 10 #include "content/renderer/media/cdm/renderer_cdm_manager.h"
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 IPC_MESSAGE_UNHANDLED(handled = false) 57 IPC_MESSAGE_UNHANDLED(handled = false)
58 IPC_END_MESSAGE_MAP() 58 IPC_END_MESSAGE_MAP()
59 return handled; 59 return handled;
60 } 60 }
61 61
62 void RendererMediaPlayerManager::WasHidden() { 62 void RendererMediaPlayerManager::WasHidden() {
63 ReleaseVideoResources(); 63 ReleaseVideoResources();
64 } 64 }
65 65
66 void RendererMediaPlayerManager::Initialize( 66 void RendererMediaPlayerManager::Initialize(
67 MediaPlayerHostMsg_Initialize_Type type, 67 media::MediaPlayerHostMsg_Initialize_Type type,
68 int player_id, 68 int player_id,
69 const GURL& url, 69 const GURL& url,
70 const GURL& first_party_for_cookies, 70 const GURL& first_party_for_cookies,
71 int demuxer_client_id, 71 int demuxer_client_id,
72 const GURL& frame_url, 72 const GURL& frame_url,
73 bool allow_credentials) { 73 bool allow_credentials) {
74 MediaPlayerHostMsg_Initialize_Params media_player_params; 74 MediaPlayerHostMsg_Initialize_Params media_player_params;
75 media_player_params.type = type; 75 media_player_params.type =
76 static_cast<MediaPlayerHostMsg_Initialize_Type>(type);
DaleCurtis 2016/01/12 20:24:09 Seems unnecessary? Did something complain?
hubbe 2016/01/12 21:23:18 ../../content/renderer/media/android/renderer_medi
DaleCurtis 2016/01/12 23:21:53 Oh I see, you have a different type of the same na
hubbe 2016/01/13 00:11:55 Done.
76 media_player_params.player_id = player_id; 77 media_player_params.player_id = player_id;
77 media_player_params.demuxer_client_id = demuxer_client_id; 78 media_player_params.demuxer_client_id = demuxer_client_id;
78 media_player_params.url = url; 79 media_player_params.url = url;
79 media_player_params.first_party_for_cookies = first_party_for_cookies; 80 media_player_params.first_party_for_cookies = first_party_for_cookies;
80 media_player_params.frame_url = frame_url; 81 media_player_params.frame_url = frame_url;
81 media_player_params.allow_credentials = allow_credentials; 82 media_player_params.allow_credentials = allow_credentials;
82 83
83 Send(new MediaPlayerHostMsg_Initialize(routing_id(), media_player_params)); 84 Send(new MediaPlayerHostMsg_Initialize(routing_id(), media_player_params));
84 } 85 }
85 86
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
124 Send(new MediaPlayerHostMsg_RequestRemotePlaybackControl(routing_id(), 125 Send(new MediaPlayerHostMsg_RequestRemotePlaybackControl(routing_id(),
125 player_id)); 126 player_id));
126 } 127 }
127 128
128 void RendererMediaPlayerManager::OnMediaMetadataChanged( 129 void RendererMediaPlayerManager::OnMediaMetadataChanged(
129 int player_id, 130 int player_id,
130 base::TimeDelta duration, 131 base::TimeDelta duration,
131 int width, 132 int width,
132 int height, 133 int height,
133 bool success) { 134 bool success) {
134 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); 135 RendererMediaPlayerInterface* player = GetMediaPlayer(player_id);
135 if (player) 136 if (player)
136 player->OnMediaMetadataChanged(duration, width, height, success); 137 player->OnMediaMetadataChanged(duration, width, height, success);
137 } 138 }
138 139
139 void RendererMediaPlayerManager::OnMediaPlaybackCompleted(int player_id) { 140 void RendererMediaPlayerManager::OnMediaPlaybackCompleted(int player_id) {
140 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); 141 RendererMediaPlayerInterface* player = GetMediaPlayer(player_id);
141 if (player) 142 if (player)
142 player->OnPlaybackComplete(); 143 player->OnPlaybackComplete();
143 } 144 }
144 145
145 void RendererMediaPlayerManager::OnMediaBufferingUpdate(int player_id, 146 void RendererMediaPlayerManager::OnMediaBufferingUpdate(int player_id,
146 int percent) { 147 int percent) {
147 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); 148 RendererMediaPlayerInterface* player = GetMediaPlayer(player_id);
148 if (player) 149 if (player)
149 player->OnBufferingUpdate(percent); 150 player->OnBufferingUpdate(percent);
150 } 151 }
151 152
152 void RendererMediaPlayerManager::OnSeekRequest( 153 void RendererMediaPlayerManager::OnSeekRequest(
153 int player_id, 154 int player_id,
154 const base::TimeDelta& time_to_seek) { 155 const base::TimeDelta& time_to_seek) {
155 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); 156 RendererMediaPlayerInterface* player = GetMediaPlayer(player_id);
156 if (player) 157 if (player)
157 player->OnSeekRequest(time_to_seek); 158 player->OnSeekRequest(time_to_seek);
158 } 159 }
159 160
160 void RendererMediaPlayerManager::OnSeekCompleted( 161 void RendererMediaPlayerManager::OnSeekCompleted(
161 int player_id, 162 int player_id,
162 const base::TimeDelta& current_time) { 163 const base::TimeDelta& current_time) {
163 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); 164 RendererMediaPlayerInterface* player = GetMediaPlayer(player_id);
164 if (player) 165 if (player)
165 player->OnSeekComplete(current_time); 166 player->OnSeekComplete(current_time);
166 } 167 }
167 168
168 void RendererMediaPlayerManager::OnMediaError(int player_id, int error) { 169 void RendererMediaPlayerManager::OnMediaError(int player_id, int error) {
169 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); 170 RendererMediaPlayerInterface* player = GetMediaPlayer(player_id);
170 if (player) 171 if (player)
171 player->OnMediaError(error); 172 player->OnMediaError(error);
172 } 173 }
173 174
174 void RendererMediaPlayerManager::OnVideoSizeChanged(int player_id, 175 void RendererMediaPlayerManager::OnVideoSizeChanged(int player_id,
175 int width, 176 int width,
176 int height) { 177 int height) {
177 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); 178 RendererMediaPlayerInterface* player = GetMediaPlayer(player_id);
178 if (player) 179 if (player)
179 player->OnVideoSizeChanged(width, height); 180 player->OnVideoSizeChanged(width, height);
180 } 181 }
181 182
182 void RendererMediaPlayerManager::OnTimeUpdate( 183 void RendererMediaPlayerManager::OnTimeUpdate(
183 int player_id, 184 int player_id,
184 base::TimeDelta current_timestamp, 185 base::TimeDelta current_timestamp,
185 base::TimeTicks current_time_ticks) { 186 base::TimeTicks current_time_ticks) {
186 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); 187 RendererMediaPlayerInterface* player = GetMediaPlayer(player_id);
187 if (player) 188 if (player)
188 player->OnTimeUpdate(current_timestamp, current_time_ticks); 189 player->OnTimeUpdate(current_timestamp, current_time_ticks);
189 } 190 }
190 191
191 void RendererMediaPlayerManager::OnWaitingForDecryptionKey(int player_id) { 192 void RendererMediaPlayerManager::OnWaitingForDecryptionKey(int player_id) {
192 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); 193 RendererMediaPlayerInterface* player = GetMediaPlayer(player_id);
193 if (player) 194 if (player)
194 player->OnWaitingForDecryptionKey(); 195 player->OnWaitingForDecryptionKey();
195 } 196 }
196 197
197 void RendererMediaPlayerManager::OnMediaPlayerReleased(int player_id) { 198 void RendererMediaPlayerManager::OnMediaPlayerReleased(int player_id) {
198 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); 199 RendererMediaPlayerInterface* player = GetMediaPlayer(player_id);
199 if (player) 200 if (player)
200 player->OnPlayerReleased(); 201 player->OnPlayerReleased();
201 } 202 }
202 203
203 void RendererMediaPlayerManager::OnConnectedToRemoteDevice(int player_id, 204 void RendererMediaPlayerManager::OnConnectedToRemoteDevice(int player_id,
204 const std::string& remote_playback_message) { 205 const std::string& remote_playback_message) {
205 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); 206 RendererMediaPlayerInterface* player = GetMediaPlayer(player_id);
206 if (player) 207 if (player)
207 player->OnConnectedToRemoteDevice(remote_playback_message); 208 player->OnConnectedToRemoteDevice(remote_playback_message);
208 } 209 }
209 210
210 void RendererMediaPlayerManager::OnDisconnectedFromRemoteDevice(int player_id) { 211 void RendererMediaPlayerManager::OnDisconnectedFromRemoteDevice(int player_id) {
211 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); 212 RendererMediaPlayerInterface* player = GetMediaPlayer(player_id);
212 if (player) 213 if (player)
213 player->OnDisconnectedFromRemoteDevice(); 214 player->OnDisconnectedFromRemoteDevice();
214 } 215 }
215 216
216 void RendererMediaPlayerManager::OnDidExitFullscreen(int player_id) { 217 void RendererMediaPlayerManager::OnDidExitFullscreen(int player_id) {
217 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); 218 RendererMediaPlayerInterface* player = GetMediaPlayer(player_id);
218 if (player) 219 if (player)
219 player->OnDidExitFullscreen(); 220 player->OnDidExitFullscreen();
220 } 221 }
221 222
222 void RendererMediaPlayerManager::OnPlayerPlay(int player_id) { 223 void RendererMediaPlayerManager::OnPlayerPlay(int player_id) {
223 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); 224 RendererMediaPlayerInterface* player = GetMediaPlayer(player_id);
224 if (player) 225 if (player)
225 player->OnMediaPlayerPlay(); 226 player->OnMediaPlayerPlay();
226 } 227 }
227 228
228 void RendererMediaPlayerManager::OnPlayerPause(int player_id) { 229 void RendererMediaPlayerManager::OnPlayerPause(int player_id) {
229 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); 230 RendererMediaPlayerInterface* player = GetMediaPlayer(player_id);
230 if (player) 231 if (player)
231 player->OnMediaPlayerPause(); 232 player->OnMediaPlayerPause();
232 } 233 }
233 234
234 void RendererMediaPlayerManager::OnRemoteRouteAvailabilityChanged( 235 void RendererMediaPlayerManager::OnRemoteRouteAvailabilityChanged(
235 int player_id, 236 int player_id,
236 bool routes_available) { 237 bool routes_available) {
237 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); 238 RendererMediaPlayerInterface* player = GetMediaPlayer(player_id);
238 if (player) 239 if (player)
239 player->OnRemoteRouteAvailabilityChanged(routes_available); 240 player->OnRemoteRouteAvailabilityChanged(routes_available);
240 } 241 }
241 242
242 void RendererMediaPlayerManager::EnterFullscreen(int player_id) { 243 void RendererMediaPlayerManager::EnterFullscreen(int player_id) {
243 Send(new MediaPlayerHostMsg_EnterFullscreen(routing_id(), player_id)); 244 Send(new MediaPlayerHostMsg_EnterFullscreen(routing_id(), player_id));
244 } 245 }
245 246
246 void RendererMediaPlayerManager::SetCdm(int player_id, int cdm_id) { 247 void RendererMediaPlayerManager::SetCdm(int player_id, int cdm_id) {
247 if (cdm_id == media::CdmContext::kInvalidCdmId) { 248 if (cdm_id == media::CdmContext::kInvalidCdmId) {
248 NOTREACHED(); 249 NOTREACHED();
249 return; 250 return;
250 } 251 }
251 Send(new MediaPlayerHostMsg_SetCdm(routing_id(), player_id, cdm_id)); 252 Send(new MediaPlayerHostMsg_SetCdm(routing_id(), player_id, cdm_id));
252 } 253 }
253 254
254 int RendererMediaPlayerManager::RegisterMediaPlayer( 255 int RendererMediaPlayerManager::RegisterMediaPlayer(
255 WebMediaPlayerAndroid* player) { 256 RendererMediaPlayerInterface* player) {
256 media_players_[next_media_player_id_] = player; 257 media_players_[next_media_player_id_] = player;
257 return next_media_player_id_++; 258 return next_media_player_id_++;
258 } 259 }
259 260
260 void RendererMediaPlayerManager::UnregisterMediaPlayer(int player_id) { 261 void RendererMediaPlayerManager::UnregisterMediaPlayer(int player_id) {
261 media_players_.erase(player_id); 262 media_players_.erase(player_id);
262 } 263 }
263 264
264 void RendererMediaPlayerManager::ReleaseVideoResources() { 265 void RendererMediaPlayerManager::ReleaseVideoResources() {
265 std::map<int, WebMediaPlayerAndroid*>::iterator player_it; 266 std::map<int, RendererMediaPlayerInterface*>::iterator player_it;
266 for (player_it = media_players_.begin(); player_it != media_players_.end(); 267 for (player_it = media_players_.begin(); player_it != media_players_.end();
267 ++player_it) { 268 ++player_it) {
268 WebMediaPlayerAndroid* player = player_it->second; 269 RendererMediaPlayerInterface* player = player_it->second;
269 270
270 // Do not release if an audio track is still playing 271 // Do not release if an audio track is still playing
271 if (player && (player->paused() || player->hasVideo())) 272 if (player && (player->paused() || player->hasVideo()))
272 player->ReleaseMediaResources(); 273 player->ReleaseMediaResources();
273 } 274 }
274 } 275 }
275 276
276 WebMediaPlayerAndroid* RendererMediaPlayerManager::GetMediaPlayer( 277 RendererMediaPlayerInterface* RendererMediaPlayerManager::GetMediaPlayer(
277 int player_id) { 278 int player_id) {
278 std::map<int, WebMediaPlayerAndroid*>::iterator iter = 279 std::map<int, RendererMediaPlayerInterface*>::iterator iter =
279 media_players_.find(player_id); 280 media_players_.find(player_id);
280 if (iter != media_players_.end()) 281 if (iter != media_players_.end())
281 return iter->second; 282 return iter->second;
282 return NULL; 283 return NULL;
283 } 284 }
284 285
285 #if defined(VIDEO_HOLE) 286 #if defined(VIDEO_HOLE)
286 void RendererMediaPlayerManager::RequestExternalSurface( 287 void RendererMediaPlayerManager::RequestExternalSurface(
287 int player_id, 288 int player_id,
288 const gfx::RectF& geometry) { 289 const gfx::RectF& geometry) {
289 Send(new MediaPlayerHostMsg_NotifyExternalSurface( 290 Send(new MediaPlayerHostMsg_NotifyExternalSurface(
290 routing_id(), player_id, true, geometry)); 291 routing_id(), player_id, true, geometry));
291 } 292 }
292 293
293 void RendererMediaPlayerManager::DidCommitCompositorFrame() { 294 void RendererMediaPlayerManager::DidCommitCompositorFrame() {
294 std::map<int, gfx::RectF> geometry_change; 295 std::map<int, gfx::RectF> geometry_change;
295 RetrieveGeometryChanges(&geometry_change); 296 RetrieveGeometryChanges(&geometry_change);
296 for (std::map<int, gfx::RectF>::iterator it = geometry_change.begin(); 297 for (std::map<int, gfx::RectF>::iterator it = geometry_change.begin();
297 it != geometry_change.end(); 298 it != geometry_change.end();
298 ++it) { 299 ++it) {
299 Send(new MediaPlayerHostMsg_NotifyExternalSurface( 300 Send(new MediaPlayerHostMsg_NotifyExternalSurface(
300 routing_id(), it->first, false, it->second)); 301 routing_id(), it->first, false, it->second));
301 } 302 }
302 } 303 }
303 304
304 void RendererMediaPlayerManager::RetrieveGeometryChanges( 305 void RendererMediaPlayerManager::RetrieveGeometryChanges(
305 std::map<int, gfx::RectF>* changes) { 306 std::map<int, gfx::RectF>* changes) {
306 DCHECK(changes->empty()); 307 DCHECK(changes->empty());
307 for (std::map<int, WebMediaPlayerAndroid*>::iterator player_it = 308 for (std::map<int, RendererMediaPlayerInterface*>::iterator player_it =
308 media_players_.begin(); 309 media_players_.begin();
309 player_it != media_players_.end(); 310 player_it != media_players_.end();
310 ++player_it) { 311 ++player_it) {
311 WebMediaPlayerAndroid* player = player_it->second; 312 RendererMediaPlayerInterface* player = player_it->second;
312 313
313 if (player && player->hasVideo()) { 314 if (player && player->hasVideo()) {
314 if (player->UpdateBoundaryRectangle()) 315 if (player->UpdateBoundaryRectangle())
315 (*changes)[player_it->first] = player->GetBoundaryRectangle(); 316 (*changes)[player_it->first] = player->GetBoundaryRectangle();
316 } 317 }
317 } 318 }
318 } 319 }
319 320
320 bool 321 bool
321 RendererMediaPlayerManager::ShouldUseVideoOverlayForEmbeddedEncryptedVideo() { 322 RendererMediaPlayerManager::ShouldUseVideoOverlayForEmbeddedEncryptedVideo() {
322 const RendererPreferences& prefs = static_cast<RenderFrameImpl*>( 323 const RendererPreferences& prefs = static_cast<RenderFrameImpl*>(
323 render_frame())->render_view()->renderer_preferences(); 324 render_frame())->render_view()->renderer_preferences();
324 return prefs.use_video_overlay_for_embedded_encrypted_video; 325 return prefs.use_video_overlay_for_embedded_encrypted_video;
325 } 326 }
326 #endif // defined(VIDEO_HOLE) 327 #endif // defined(VIDEO_HOLE)
327 328
328 } // namespace content 329 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698