| OLD | NEW |
| 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 Loading... |
| 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); |
| 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 Loading... |
| 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 |
| OLD | NEW |