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