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/webmediaplayer_android.h" | 5 #include "content/renderer/media/android/webmediaplayer_android.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/callback_helpers.h" | 10 #include "base/callback_helpers.h" |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
62 // Prefix for histograms related to Encrypted Media Extensions. | 62 // Prefix for histograms related to Encrypted Media Extensions. |
63 const char* kMediaEme = "Media.EME."; | 63 const char* kMediaEme = "Media.EME."; |
64 } // namespace | 64 } // namespace |
65 | 65 |
66 namespace content { | 66 namespace content { |
67 | 67 |
68 // static | 68 // static |
69 void WebMediaPlayerAndroid::OnReleaseRemotePlaybackTexture( | 69 void WebMediaPlayerAndroid::OnReleaseRemotePlaybackTexture( |
70 const scoped_refptr<base::MessageLoopProxy>& main_loop, | 70 const scoped_refptr<base::MessageLoopProxy>& main_loop, |
71 const base::WeakPtr<WebMediaPlayerAndroid>& player, | 71 const base::WeakPtr<WebMediaPlayerAndroid>& player, |
72 scoped_ptr<gpu::MailboxHolder> mailbox_holder) { | 72 scoped_ptr<gpu::MailboxHolder> mailbox_holder, |
| 73 const std::vector<uint32>& release_sync_points) { |
73 main_loop->PostTask( | 74 main_loop->PostTask( |
74 FROM_HERE, | 75 FROM_HERE, |
75 base::Bind(&WebMediaPlayerAndroid::DoReleaseRemotePlaybackTexture, | 76 base::Bind(&WebMediaPlayerAndroid::DoReleaseRemotePlaybackTexture, |
76 player, | 77 player, |
77 mailbox_holder->sync_point)); | 78 release_sync_points)); |
78 } | 79 } |
79 | 80 |
80 WebMediaPlayerAndroid::WebMediaPlayerAndroid( | 81 WebMediaPlayerAndroid::WebMediaPlayerAndroid( |
81 blink::WebFrame* frame, | 82 blink::WebFrame* frame, |
82 blink::WebMediaPlayerClient* client, | 83 blink::WebMediaPlayerClient* client, |
83 base::WeakPtr<WebMediaPlayerDelegate> delegate, | 84 base::WeakPtr<WebMediaPlayerDelegate> delegate, |
84 RendererMediaPlayerManager* manager, | 85 RendererMediaPlayerManager* manager, |
85 StreamTextureFactory* factory, | 86 StreamTextureFactory* factory, |
86 const scoped_refptr<base::MessageLoopProxy>& media_loop, | 87 const scoped_refptr<base::MessageLoopProxy>& media_loop, |
87 media::MediaLog* media_log) | 88 media::MediaLog* media_log) |
(...skipping 1326 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1414 decryptor_ready_cb.Run(proxy_decryptor_->GetDecryptor()); | 1415 decryptor_ready_cb.Run(proxy_decryptor_->GetDecryptor()); |
1415 return; | 1416 return; |
1416 } | 1417 } |
1417 | 1418 |
1418 // TODO(xhwang): Also notify |web_cdm_| when we implement | 1419 // TODO(xhwang): Also notify |web_cdm_| when we implement |
1419 // setContentDecryptionModule(). See: http://crbug.com/224786 | 1420 // setContentDecryptionModule(). See: http://crbug.com/224786 |
1420 | 1421 |
1421 decryptor_ready_cb_ = decryptor_ready_cb; | 1422 decryptor_ready_cb_ = decryptor_ready_cb; |
1422 } | 1423 } |
1423 | 1424 |
1424 void WebMediaPlayerAndroid::DoReleaseRemotePlaybackTexture(uint32 sync_point) { | 1425 void WebMediaPlayerAndroid::DoReleaseRemotePlaybackTexture( |
| 1426 const std::vector<uint32>& release_sync_points) { |
1425 DCHECK(main_thread_checker_.CalledOnValidThread()); | 1427 DCHECK(main_thread_checker_.CalledOnValidThread()); |
1426 DCHECK(remote_playback_texture_id_); | 1428 DCHECK(remote_playback_texture_id_); |
1427 | 1429 |
1428 GLES2Interface* gl = stream_texture_factory_->ContextGL(); | 1430 GLES2Interface* gl = stream_texture_factory_->ContextGL(); |
1429 | 1431 |
1430 if (sync_point) | 1432 for (size_t i = 0; i < release_sync_points.size(); i++) |
1431 gl->WaitSyncPointCHROMIUM(sync_point); | 1433 gl->WaitSyncPointCHROMIUM(release_sync_points[i]); |
1432 gl->DeleteTextures(1, &remote_playback_texture_id_); | 1434 gl->DeleteTextures(1, &remote_playback_texture_id_); |
1433 remote_playback_texture_id_ = 0; | 1435 remote_playback_texture_id_ = 0; |
1434 } | 1436 } |
1435 | 1437 |
1436 void WebMediaPlayerAndroid::enterFullscreen() { | 1438 void WebMediaPlayerAndroid::enterFullscreen() { |
1437 if (manager_->CanEnterFullscreen(frame_)) { | 1439 if (manager_->CanEnterFullscreen(frame_)) { |
1438 manager_->EnterFullscreen(player_id_, frame_); | 1440 manager_->EnterFullscreen(player_id_, frame_); |
1439 SetNeedsEstablishPeer(false); | 1441 SetNeedsEstablishPeer(false); |
1440 } | 1442 } |
1441 } | 1443 } |
1442 | 1444 |
1443 void WebMediaPlayerAndroid::exitFullscreen() { | 1445 void WebMediaPlayerAndroid::exitFullscreen() { |
1444 manager_->ExitFullscreen(player_id_); | 1446 manager_->ExitFullscreen(player_id_); |
1445 } | 1447 } |
1446 | 1448 |
1447 bool WebMediaPlayerAndroid::canEnterFullscreen() const { | 1449 bool WebMediaPlayerAndroid::canEnterFullscreen() const { |
1448 return manager_->CanEnterFullscreen(frame_); | 1450 return manager_->CanEnterFullscreen(frame_); |
1449 } | 1451 } |
1450 | 1452 |
1451 } // namespace content | 1453 } // namespace content |
OLD | NEW |