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

Side by Side Diff: content/renderer/media/android/webmediaplayer_android.cc

Issue 175223003: HW Video: Make media::VideoFrame handle the sync point of the compositor as well as webgl (Closed) Base URL: https://git.chromium.org/chromium/src.git@master
Patch Set: previous patchset has unrelated code by mistake. Created 6 years, 9 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/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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698