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

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: comments addressed 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 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698