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 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
65 using media::VideoFrame; | 65 using media::VideoFrame; |
66 | 66 |
67 namespace { | 67 namespace { |
68 // Prefix for histograms related to Encrypted Media Extensions. | 68 // Prefix for histograms related to Encrypted Media Extensions. |
69 const char* kMediaEme = "Media.EME."; | 69 const char* kMediaEme = "Media.EME."; |
70 | 70 |
71 // File-static function is to allow it to run even after WMPA is deleted. | 71 // File-static function is to allow it to run even after WMPA is deleted. |
72 void OnReleaseTexture( | 72 void OnReleaseTexture( |
73 const scoped_refptr<content::StreamTextureFactory>& factories, | 73 const scoped_refptr<content::StreamTextureFactory>& factories, |
74 uint32 texture_id, | 74 uint32 texture_id, |
75 const std::vector<uint32>& release_sync_points) { | 75 uint32 release_sync_point) { |
76 GLES2Interface* gl = factories->ContextGL(); | 76 GLES2Interface* gl = factories->ContextGL(); |
77 for (size_t i = 0; i < release_sync_points.size(); i++) | 77 gl->WaitSyncPointCHROMIUM(release_sync_point); |
78 gl->WaitSyncPointCHROMIUM(release_sync_points[i]); | |
79 gl->DeleteTextures(1, &texture_id); | 78 gl->DeleteTextures(1, &texture_id); |
80 } | 79 } |
80 | |
81 class SyncPointProviderImpl : public media::VideoFrame::SyncPointProvider { | |
82 public: | |
83 explicit SyncPointProviderImpl( | |
84 blink::WebGraphicsContext3D* web_graphics_context) | |
85 : web_graphics_context_(web_graphics_context) {} | |
86 virtual ~SyncPointProviderImpl(); | |
87 virtual uint32 InsertSyncPoint(); | |
danakj
2014/06/19 15:56:26
since you're in the .cc you could define these met
dshwang
2014/06/23 18:33:20
Done.
| |
88 virtual void WaitSyncPoint(uint32 sync_point); | |
89 | |
90 private: | |
91 blink::WebGraphicsContext3D* web_graphics_context_; | |
92 }; | |
93 | |
94 SyncPointProviderImpl::~SyncPointProviderImpl() { | |
95 } | |
96 | |
97 uint32 SyncPointProviderImpl::InsertSyncPoint() { | |
98 return web_graphics_context_->insertSyncPoint(); | |
99 } | |
100 | |
101 void SyncPointProviderImpl::WaitSyncPoint(uint32 sync_point) { | |
102 web_graphics_context_->waitSyncPoint(sync_point); | |
103 } | |
104 | |
81 } // namespace | 105 } // namespace |
82 | 106 |
83 namespace content { | 107 namespace content { |
84 | 108 |
85 WebMediaPlayerAndroid::WebMediaPlayerAndroid( | 109 WebMediaPlayerAndroid::WebMediaPlayerAndroid( |
86 blink::WebFrame* frame, | 110 blink::WebFrame* frame, |
87 blink::WebMediaPlayerClient* client, | 111 blink::WebMediaPlayerClient* client, |
88 base::WeakPtr<WebMediaPlayerDelegate> delegate, | 112 base::WeakPtr<WebMediaPlayerDelegate> delegate, |
89 RendererMediaPlayerManager* player_manager, | 113 RendererMediaPlayerManager* player_manager, |
90 RendererCdmManager* cdm_manager, | 114 RendererCdmManager* cdm_manager, |
(...skipping 441 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
532 web_graphics_context->pixelStorei(GL_UNPACK_FLIP_Y_CHROMIUM, false); | 556 web_graphics_context->pixelStorei(GL_UNPACK_FLIP_Y_CHROMIUM, false); |
533 web_graphics_context->pixelStorei(GL_UNPACK_PREMULTIPLY_ALPHA_CHROMIUM, | 557 web_graphics_context->pixelStorei(GL_UNPACK_PREMULTIPLY_ALPHA_CHROMIUM, |
534 false); | 558 false); |
535 | 559 |
536 if (mailbox_holder->texture_target == GL_TEXTURE_EXTERNAL_OES) | 560 if (mailbox_holder->texture_target == GL_TEXTURE_EXTERNAL_OES) |
537 web_graphics_context->bindTexture(GL_TEXTURE_EXTERNAL_OES, 0); | 561 web_graphics_context->bindTexture(GL_TEXTURE_EXTERNAL_OES, 0); |
538 else | 562 else |
539 web_graphics_context->bindTexture(GL_TEXTURE_2D, texture); | 563 web_graphics_context->bindTexture(GL_TEXTURE_2D, texture); |
540 web_graphics_context->deleteTexture(source_texture); | 564 web_graphics_context->deleteTexture(source_texture); |
541 web_graphics_context->flush(); | 565 web_graphics_context->flush(); |
542 video_frame->AppendReleaseSyncPoint(web_graphics_context->insertSyncPoint()); | 566 |
567 SyncPointProviderImpl provider(web_graphics_context); | |
568 video_frame->UpdateReleaseSyncPoint(provider); | |
543 return true; | 569 return true; |
544 } | 570 } |
545 | 571 |
546 bool WebMediaPlayerAndroid::hasSingleSecurityOrigin() const { | 572 bool WebMediaPlayerAndroid::hasSingleSecurityOrigin() const { |
547 if (info_loader_) | 573 if (info_loader_) |
548 return info_loader_->HasSingleOrigin(); | 574 return info_loader_->HasSingleOrigin(); |
549 // The info loader may have failed. | 575 // The info loader may have failed. |
550 if (player_type_ == MEDIA_PLAYER_TYPE_URL) | 576 if (player_type_ == MEDIA_PLAYER_TYPE_URL) |
551 return false; | 577 return false; |
552 return true; | 578 return true; |
(...skipping 994 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1547 | 1573 |
1548 void WebMediaPlayerAndroid::exitFullscreen() { | 1574 void WebMediaPlayerAndroid::exitFullscreen() { |
1549 player_manager_->ExitFullscreen(player_id_); | 1575 player_manager_->ExitFullscreen(player_id_); |
1550 } | 1576 } |
1551 | 1577 |
1552 bool WebMediaPlayerAndroid::canEnterFullscreen() const { | 1578 bool WebMediaPlayerAndroid::canEnterFullscreen() const { |
1553 return player_manager_->CanEnterFullscreen(frame_); | 1579 return player_manager_->CanEnterFullscreen(frame_); |
1554 } | 1580 } |
1555 | 1581 |
1556 } // namespace content | 1582 } // namespace content |
OLD | NEW |