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 1318 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1406 decryptor_ready_cb.Run(proxy_decryptor_->GetDecryptor()); | 1407 decryptor_ready_cb.Run(proxy_decryptor_->GetDecryptor()); |
1407 return; | 1408 return; |
1408 } | 1409 } |
1409 | 1410 |
1410 // TODO(xhwang): Also notify |web_cdm_| when we implement | 1411 // TODO(xhwang): Also notify |web_cdm_| when we implement |
1411 // setContentDecryptionModule(). See: http://crbug.com/224786 | 1412 // setContentDecryptionModule(). See: http://crbug.com/224786 |
1412 | 1413 |
1413 decryptor_ready_cb_ = decryptor_ready_cb; | 1414 decryptor_ready_cb_ = decryptor_ready_cb; |
1414 } | 1415 } |
1415 | 1416 |
1416 void WebMediaPlayerAndroid::DoReleaseRemotePlaybackTexture(uint32 sync_point) { | 1417 void WebMediaPlayerAndroid::DoReleaseRemotePlaybackTexture( |
| 1418 const std::vector<uint32>& release_sync_points) { |
1417 DCHECK(main_thread_checker_.CalledOnValidThread()); | 1419 DCHECK(main_thread_checker_.CalledOnValidThread()); |
1418 DCHECK(remote_playback_texture_id_); | 1420 DCHECK(remote_playback_texture_id_); |
1419 | 1421 |
1420 GLES2Interface* gl = stream_texture_factory_->ContextGL(); | 1422 GLES2Interface* gl = stream_texture_factory_->ContextGL(); |
1421 | 1423 |
1422 if (sync_point) | 1424 for (size_t i = 0; i < release_sync_points.size(); i++) |
1423 gl->WaitSyncPointCHROMIUM(sync_point); | 1425 gl->WaitSyncPointCHROMIUM(release_sync_points[i]); |
1424 gl->DeleteTextures(1, &remote_playback_texture_id_); | 1426 gl->DeleteTextures(1, &remote_playback_texture_id_); |
1425 remote_playback_texture_id_ = 0; | 1427 remote_playback_texture_id_ = 0; |
1426 } | 1428 } |
1427 | 1429 |
1428 void WebMediaPlayerAndroid::enterFullscreen() { | 1430 void WebMediaPlayerAndroid::enterFullscreen() { |
1429 if (manager_->CanEnterFullscreen(frame_)) { | 1431 if (manager_->CanEnterFullscreen(frame_)) { |
1430 manager_->EnterFullscreen(player_id_, frame_); | 1432 manager_->EnterFullscreen(player_id_, frame_); |
1431 SetNeedsEstablishPeer(false); | 1433 SetNeedsEstablishPeer(false); |
1432 } | 1434 } |
1433 } | 1435 } |
1434 | 1436 |
1435 void WebMediaPlayerAndroid::exitFullscreen() { | 1437 void WebMediaPlayerAndroid::exitFullscreen() { |
1436 manager_->ExitFullscreen(player_id_); | 1438 manager_->ExitFullscreen(player_id_); |
1437 } | 1439 } |
1438 | 1440 |
1439 bool WebMediaPlayerAndroid::canEnterFullscreen() const { | 1441 bool WebMediaPlayerAndroid::canEnterFullscreen() const { |
1440 return manager_->CanEnterFullscreen(frame_); | 1442 return manager_->CanEnterFullscreen(frame_); |
1441 } | 1443 } |
1442 | 1444 |
1443 } // namespace content | 1445 } // namespace content |
OLD | NEW |