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 |