| 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 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 124 Send(new MediaPlayerHostMsg_RequestRemotePlaybackControl(routing_id(), | 124 Send(new MediaPlayerHostMsg_RequestRemotePlaybackControl(routing_id(), |
| 125 player_id)); | 125 player_id)); |
| 126 } | 126 } |
| 127 | 127 |
| 128 void RendererMediaPlayerManager::OnMediaMetadataChanged( | 128 void RendererMediaPlayerManager::OnMediaMetadataChanged( |
| 129 int player_id, | 129 int player_id, |
| 130 base::TimeDelta duration, | 130 base::TimeDelta duration, |
| 131 int width, | 131 int width, |
| 132 int height, | 132 int height, |
| 133 bool success) { | 133 bool success) { |
| 134 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); | 134 RendererMediaPlayerInterface* player = GetMediaPlayer(player_id); |
| 135 if (player) | 135 if (player) |
| 136 player->OnMediaMetadataChanged(duration, width, height, success); | 136 player->OnMediaMetadataChanged(duration, width, height, success); |
| 137 } | 137 } |
| 138 | 138 |
| 139 void RendererMediaPlayerManager::OnMediaPlaybackCompleted(int player_id) { | 139 void RendererMediaPlayerManager::OnMediaPlaybackCompleted(int player_id) { |
| 140 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); | 140 RendererMediaPlayerInterface* player = GetMediaPlayer(player_id); |
| 141 if (player) | 141 if (player) |
| 142 player->OnPlaybackComplete(); | 142 player->OnPlaybackComplete(); |
| 143 } | 143 } |
| 144 | 144 |
| 145 void RendererMediaPlayerManager::OnMediaBufferingUpdate(int player_id, | 145 void RendererMediaPlayerManager::OnMediaBufferingUpdate(int player_id, |
| 146 int percent) { | 146 int percent) { |
| 147 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); | 147 RendererMediaPlayerInterface* player = GetMediaPlayer(player_id); |
| 148 if (player) | 148 if (player) |
| 149 player->OnBufferingUpdate(percent); | 149 player->OnBufferingUpdate(percent); |
| 150 } | 150 } |
| 151 | 151 |
| 152 void RendererMediaPlayerManager::OnSeekRequest( | 152 void RendererMediaPlayerManager::OnSeekRequest( |
| 153 int player_id, | 153 int player_id, |
| 154 const base::TimeDelta& time_to_seek) { | 154 const base::TimeDelta& time_to_seek) { |
| 155 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); | 155 RendererMediaPlayerInterface* player = GetMediaPlayer(player_id); |
| 156 if (player) | 156 if (player) |
| 157 player->OnSeekRequest(time_to_seek); | 157 player->OnSeekRequest(time_to_seek); |
| 158 } | 158 } |
| 159 | 159 |
| 160 void RendererMediaPlayerManager::OnSeekCompleted( | 160 void RendererMediaPlayerManager::OnSeekCompleted( |
| 161 int player_id, | 161 int player_id, |
| 162 const base::TimeDelta& current_time) { | 162 const base::TimeDelta& current_time) { |
| 163 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); | 163 RendererMediaPlayerInterface* player = GetMediaPlayer(player_id); |
| 164 if (player) | 164 if (player) |
| 165 player->OnSeekComplete(current_time); | 165 player->OnSeekComplete(current_time); |
| 166 } | 166 } |
| 167 | 167 |
| 168 void RendererMediaPlayerManager::OnMediaError(int player_id, int error) { | 168 void RendererMediaPlayerManager::OnMediaError(int player_id, int error) { |
| 169 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); | 169 RendererMediaPlayerInterface* player = GetMediaPlayer(player_id); |
| 170 if (player) | 170 if (player) |
| 171 player->OnMediaError(error); | 171 player->OnMediaError(error); |
| 172 } | 172 } |
| 173 | 173 |
| 174 void RendererMediaPlayerManager::OnVideoSizeChanged(int player_id, | 174 void RendererMediaPlayerManager::OnVideoSizeChanged(int player_id, |
| 175 int width, | 175 int width, |
| 176 int height) { | 176 int height) { |
| 177 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); | 177 RendererMediaPlayerInterface* player = GetMediaPlayer(player_id); |
| 178 if (player) | 178 if (player) |
| 179 player->OnVideoSizeChanged(width, height); | 179 player->OnVideoSizeChanged(width, height); |
| 180 } | 180 } |
| 181 | 181 |
| 182 void RendererMediaPlayerManager::OnTimeUpdate( | 182 void RendererMediaPlayerManager::OnTimeUpdate( |
| 183 int player_id, | 183 int player_id, |
| 184 base::TimeDelta current_timestamp, | 184 base::TimeDelta current_timestamp, |
| 185 base::TimeTicks current_time_ticks) { | 185 base::TimeTicks current_time_ticks) { |
| 186 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); | 186 RendererMediaPlayerInterface* player = GetMediaPlayer(player_id); |
| 187 if (player) | 187 if (player) |
| 188 player->OnTimeUpdate(current_timestamp, current_time_ticks); | 188 player->OnTimeUpdate(current_timestamp, current_time_ticks); |
| 189 } | 189 } |
| 190 | 190 |
| 191 void RendererMediaPlayerManager::OnWaitingForDecryptionKey(int player_id) { | 191 void RendererMediaPlayerManager::OnWaitingForDecryptionKey(int player_id) { |
| 192 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); | 192 RendererMediaPlayerInterface* player = GetMediaPlayer(player_id); |
| 193 if (player) | 193 if (player) |
| 194 player->OnWaitingForDecryptionKey(); | 194 player->OnWaitingForDecryptionKey(); |
| 195 } | 195 } |
| 196 | 196 |
| 197 void RendererMediaPlayerManager::OnMediaPlayerReleased(int player_id) { | 197 void RendererMediaPlayerManager::OnMediaPlayerReleased(int player_id) { |
| 198 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); | 198 RendererMediaPlayerInterface* player = GetMediaPlayer(player_id); |
| 199 if (player) | 199 if (player) |
| 200 player->OnPlayerReleased(); | 200 player->OnPlayerReleased(); |
| 201 } | 201 } |
| 202 | 202 |
| 203 void RendererMediaPlayerManager::OnConnectedToRemoteDevice(int player_id, | 203 void RendererMediaPlayerManager::OnConnectedToRemoteDevice(int player_id, |
| 204 const std::string& remote_playback_message) { | 204 const std::string& remote_playback_message) { |
| 205 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); | 205 RendererMediaPlayerInterface* player = GetMediaPlayer(player_id); |
| 206 if (player) | 206 if (player) |
| 207 player->OnConnectedToRemoteDevice(remote_playback_message); | 207 player->OnConnectedToRemoteDevice(remote_playback_message); |
| 208 } | 208 } |
| 209 | 209 |
| 210 void RendererMediaPlayerManager::OnDisconnectedFromRemoteDevice(int player_id) { | 210 void RendererMediaPlayerManager::OnDisconnectedFromRemoteDevice(int player_id) { |
| 211 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); | 211 RendererMediaPlayerInterface* player = GetMediaPlayer(player_id); |
| 212 if (player) | 212 if (player) |
| 213 player->OnDisconnectedFromRemoteDevice(); | 213 player->OnDisconnectedFromRemoteDevice(); |
| 214 } | 214 } |
| 215 | 215 |
| 216 void RendererMediaPlayerManager::OnDidExitFullscreen(int player_id) { | 216 void RendererMediaPlayerManager::OnDidExitFullscreen(int player_id) { |
| 217 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); | 217 RendererMediaPlayerInterface* player = GetMediaPlayer(player_id); |
| 218 if (player) | 218 if (player) |
| 219 player->OnDidExitFullscreen(); | 219 player->OnDidExitFullscreen(); |
| 220 } | 220 } |
| 221 | 221 |
| 222 void RendererMediaPlayerManager::OnPlayerPlay(int player_id) { | 222 void RendererMediaPlayerManager::OnPlayerPlay(int player_id) { |
| 223 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); | 223 RendererMediaPlayerInterface* player = GetMediaPlayer(player_id); |
| 224 if (player) | 224 if (player) |
| 225 player->OnMediaPlayerPlay(); | 225 player->OnMediaPlayerPlay(); |
| 226 } | 226 } |
| 227 | 227 |
| 228 void RendererMediaPlayerManager::OnPlayerPause(int player_id) { | 228 void RendererMediaPlayerManager::OnPlayerPause(int player_id) { |
| 229 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); | 229 RendererMediaPlayerInterface* player = GetMediaPlayer(player_id); |
| 230 if (player) | 230 if (player) |
| 231 player->OnMediaPlayerPause(); | 231 player->OnMediaPlayerPause(); |
| 232 } | 232 } |
| 233 | 233 |
| 234 void RendererMediaPlayerManager::OnRemoteRouteAvailabilityChanged( | 234 void RendererMediaPlayerManager::OnRemoteRouteAvailabilityChanged( |
| 235 int player_id, | 235 int player_id, |
| 236 bool routes_available) { | 236 bool routes_available) { |
| 237 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); | 237 RendererMediaPlayerInterface* player = GetMediaPlayer(player_id); |
| 238 if (player) | 238 if (player) |
| 239 player->OnRemoteRouteAvailabilityChanged(routes_available); | 239 player->OnRemoteRouteAvailabilityChanged(routes_available); |
| 240 } | 240 } |
| 241 | 241 |
| 242 void RendererMediaPlayerManager::EnterFullscreen(int player_id) { | 242 void RendererMediaPlayerManager::EnterFullscreen(int player_id) { |
| 243 Send(new MediaPlayerHostMsg_EnterFullscreen(routing_id(), player_id)); | 243 Send(new MediaPlayerHostMsg_EnterFullscreen(routing_id(), player_id)); |
| 244 } | 244 } |
| 245 | 245 |
| 246 void RendererMediaPlayerManager::SetCdm(int player_id, int cdm_id) { | 246 void RendererMediaPlayerManager::SetCdm(int player_id, int cdm_id) { |
| 247 if (cdm_id == media::CdmContext::kInvalidCdmId) { | 247 if (cdm_id == media::CdmContext::kInvalidCdmId) { |
| 248 NOTREACHED(); | 248 NOTREACHED(); |
| 249 return; | 249 return; |
| 250 } | 250 } |
| 251 Send(new MediaPlayerHostMsg_SetCdm(routing_id(), player_id, cdm_id)); | 251 Send(new MediaPlayerHostMsg_SetCdm(routing_id(), player_id, cdm_id)); |
| 252 } | 252 } |
| 253 | 253 |
| 254 int RendererMediaPlayerManager::RegisterMediaPlayer( | 254 int RendererMediaPlayerManager::RegisterMediaPlayer( |
| 255 WebMediaPlayerAndroid* player) { | 255 RendererMediaPlayerInterface* player) { |
| 256 media_players_[next_media_player_id_] = player; | 256 media_players_[next_media_player_id_] = player; |
| 257 return next_media_player_id_++; | 257 return next_media_player_id_++; |
| 258 } | 258 } |
| 259 | 259 |
| 260 void RendererMediaPlayerManager::UnregisterMediaPlayer(int player_id) { | 260 void RendererMediaPlayerManager::UnregisterMediaPlayer(int player_id) { |
| 261 media_players_.erase(player_id); | 261 media_players_.erase(player_id); |
| 262 } | 262 } |
| 263 | 263 |
| 264 void RendererMediaPlayerManager::ReleaseVideoResources() { | 264 void RendererMediaPlayerManager::ReleaseVideoResources() { |
| 265 std::map<int, WebMediaPlayerAndroid*>::iterator player_it; | 265 std::map<int, RendererMediaPlayerInterface*>::iterator player_it; |
| 266 for (player_it = media_players_.begin(); player_it != media_players_.end(); | 266 for (player_it = media_players_.begin(); player_it != media_players_.end(); |
| 267 ++player_it) { | 267 ++player_it) { |
| 268 WebMediaPlayerAndroid* player = player_it->second; | 268 RendererMediaPlayerInterface* player = player_it->second; |
| 269 | 269 |
| 270 // Do not release if an audio track is still playing | 270 // Do not release if an audio track is still playing |
| 271 if (player && (player->paused() || player->hasVideo())) | 271 if (player && (player->paused() || player->hasVideo())) |
| 272 player->ReleaseMediaResources(); | 272 player->ReleaseMediaResources(); |
| 273 } | 273 } |
| 274 } | 274 } |
| 275 | 275 |
| 276 WebMediaPlayerAndroid* RendererMediaPlayerManager::GetMediaPlayer( | 276 RendererMediaPlayerInterface* RendererMediaPlayerManager::GetMediaPlayer( |
| 277 int player_id) { | 277 int player_id) { |
| 278 std::map<int, WebMediaPlayerAndroid*>::iterator iter = | 278 std::map<int, RendererMediaPlayerInterface*>::iterator iter = |
| 279 media_players_.find(player_id); | 279 media_players_.find(player_id); |
| 280 if (iter != media_players_.end()) | 280 if (iter != media_players_.end()) |
| 281 return iter->second; | 281 return iter->second; |
| 282 return NULL; | 282 return NULL; |
| 283 } | 283 } |
| 284 | 284 |
| 285 #if defined(VIDEO_HOLE) | 285 #if defined(VIDEO_HOLE) |
| 286 void RendererMediaPlayerManager::RequestExternalSurface( | 286 void RendererMediaPlayerManager::RequestExternalSurface( |
| 287 int player_id, | 287 int player_id, |
| 288 const gfx::RectF& geometry) { | 288 const gfx::RectF& geometry) { |
| 289 Send(new MediaPlayerHostMsg_NotifyExternalSurface( | 289 Send(new MediaPlayerHostMsg_NotifyExternalSurface( |
| 290 routing_id(), player_id, true, geometry)); | 290 routing_id(), player_id, true, geometry)); |
| 291 } | 291 } |
| 292 | 292 |
| 293 void RendererMediaPlayerManager::DidCommitCompositorFrame() { | 293 void RendererMediaPlayerManager::DidCommitCompositorFrame() { |
| 294 std::map<int, gfx::RectF> geometry_change; | 294 std::map<int, gfx::RectF> geometry_change; |
| 295 RetrieveGeometryChanges(&geometry_change); | 295 RetrieveGeometryChanges(&geometry_change); |
| 296 for (std::map<int, gfx::RectF>::iterator it = geometry_change.begin(); | 296 for (std::map<int, gfx::RectF>::iterator it = geometry_change.begin(); |
| 297 it != geometry_change.end(); | 297 it != geometry_change.end(); |
| 298 ++it) { | 298 ++it) { |
| 299 Send(new MediaPlayerHostMsg_NotifyExternalSurface( | 299 Send(new MediaPlayerHostMsg_NotifyExternalSurface( |
| 300 routing_id(), it->first, false, it->second)); | 300 routing_id(), it->first, false, it->second)); |
| 301 } | 301 } |
| 302 } | 302 } |
| 303 | 303 |
| 304 void RendererMediaPlayerManager::RetrieveGeometryChanges( | 304 void RendererMediaPlayerManager::RetrieveGeometryChanges( |
| 305 std::map<int, gfx::RectF>* changes) { | 305 std::map<int, gfx::RectF>* changes) { |
| 306 DCHECK(changes->empty()); | 306 DCHECK(changes->empty()); |
| 307 for (std::map<int, WebMediaPlayerAndroid*>::iterator player_it = | 307 for (std::map<int, RendererMediaPlayerInterface*>::iterator player_it = |
| 308 media_players_.begin(); | 308 media_players_.begin(); |
| 309 player_it != media_players_.end(); | 309 player_it != media_players_.end(); |
| 310 ++player_it) { | 310 ++player_it) { |
| 311 WebMediaPlayerAndroid* player = player_it->second; | 311 RendererMediaPlayerInterface* player = player_it->second; |
| 312 | 312 |
| 313 if (player && player->hasVideo()) { | 313 if (player && player->hasVideo()) { |
| 314 if (player->UpdateBoundaryRectangle()) | 314 if (player->UpdateBoundaryRectangle()) |
| 315 (*changes)[player_it->first] = player->GetBoundaryRectangle(); | 315 (*changes)[player_it->first] = player->GetBoundaryRectangle(); |
| 316 } | 316 } |
| 317 } | 317 } |
| 318 } | 318 } |
| 319 | 319 |
| 320 bool | 320 bool |
| 321 RendererMediaPlayerManager::ShouldUseVideoOverlayForEmbeddedEncryptedVideo() { | 321 RendererMediaPlayerManager::ShouldUseVideoOverlayForEmbeddedEncryptedVideo() { |
| 322 const RendererPreferences& prefs = static_cast<RenderFrameImpl*>( | 322 const RendererPreferences& prefs = static_cast<RenderFrameImpl*>( |
| 323 render_frame())->render_view()->renderer_preferences(); | 323 render_frame())->render_view()->renderer_preferences(); |
| 324 return prefs.use_video_overlay_for_embedded_encrypted_video; | 324 return prefs.use_video_overlay_for_embedded_encrypted_video; |
| 325 } | 325 } |
| 326 #endif // defined(VIDEO_HOLE) | 326 #endif // defined(VIDEO_HOLE) |
| 327 | 327 |
| 328 } // namespace content | 328 } // namespace content |
| OLD | NEW |