| 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 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 63 using media::VideoFrame; | 63 using media::VideoFrame; |
| 64 | 64 |
| 65 namespace { | 65 namespace { |
| 66 // Prefix for histograms related to Encrypted Media Extensions. | 66 // Prefix for histograms related to Encrypted Media Extensions. |
| 67 const char* kMediaEme = "Media.EME."; | 67 const char* kMediaEme = "Media.EME."; |
| 68 | 68 |
| 69 // File-static function is to allow it to run even after WMPA is deleted. | 69 // File-static function is to allow it to run even after WMPA is deleted. |
| 70 void OnReleaseTexture( | 70 void OnReleaseTexture( |
| 71 const scoped_refptr<content::StreamTextureFactory>& factories, | 71 const scoped_refptr<content::StreamTextureFactory>& factories, |
| 72 uint32 texture_id, | 72 uint32 texture_id, |
| 73 scoped_ptr<gpu::MailboxHolder> mailbox_holder) { | 73 const std::vector<uint32>& release_sync_points) { |
| 74 GLES2Interface* gl = factories->ContextGL(); | 74 GLES2Interface* gl = factories->ContextGL(); |
| 75 if (mailbox_holder->sync_point) | 75 for (size_t i = 0; i < release_sync_points.size(); i++) |
| 76 gl->WaitSyncPointCHROMIUM(mailbox_holder->sync_point); | 76 gl->WaitSyncPointCHROMIUM(release_sync_points[i]); |
| 77 gl->DeleteTextures(1, &texture_id); | 77 gl->DeleteTextures(1, &texture_id); |
| 78 } | 78 } |
| 79 } // namespace | 79 } // namespace |
| 80 | 80 |
| 81 namespace content { | 81 namespace content { |
| 82 | 82 |
| 83 WebMediaPlayerAndroid::WebMediaPlayerAndroid( | 83 WebMediaPlayerAndroid::WebMediaPlayerAndroid( |
| 84 blink::WebFrame* frame, | 84 blink::WebFrame* frame, |
| 85 blink::WebMediaPlayerClient* client, | 85 blink::WebMediaPlayerClient* client, |
| 86 base::WeakPtr<WebMediaPlayerDelegate> delegate, | 86 base::WeakPtr<WebMediaPlayerDelegate> delegate, |
| (...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 451 | 451 |
| 452 scoped_refptr<VideoFrame> video_frame; | 452 scoped_refptr<VideoFrame> video_frame; |
| 453 { | 453 { |
| 454 base::AutoLock auto_lock(current_frame_lock_); | 454 base::AutoLock auto_lock(current_frame_lock_); |
| 455 video_frame = current_frame_; | 455 video_frame = current_frame_; |
| 456 } | 456 } |
| 457 | 457 |
| 458 if (!video_frame || | 458 if (!video_frame || |
| 459 video_frame->format() != media::VideoFrame::NATIVE_TEXTURE) | 459 video_frame->format() != media::VideoFrame::NATIVE_TEXTURE) |
| 460 return false; | 460 return false; |
| 461 gpu::MailboxHolder* mailbox_holder = video_frame->mailbox_holder(); | 461 const gpu::MailboxHolder* mailbox_holder = video_frame->mailbox_holder(); |
| 462 DCHECK((!is_remote_ && | 462 DCHECK((!is_remote_ && |
| 463 mailbox_holder->texture_target == GL_TEXTURE_EXTERNAL_OES) || | 463 mailbox_holder->texture_target == GL_TEXTURE_EXTERNAL_OES) || |
| 464 (is_remote_ && mailbox_holder->texture_target == GL_TEXTURE_2D)); | 464 (is_remote_ && mailbox_holder->texture_target == GL_TEXTURE_2D)); |
| 465 | 465 |
| 466 // For hidden video element (with style "display:none"), ensure the texture | 466 // For hidden video element (with style "display:none"), ensure the texture |
| 467 // size is set. | 467 // size is set. |
| 468 if (!is_remote_ && | 468 if (!is_remote_ && |
| 469 (cached_stream_texture_size_.width != natural_size_.width || | 469 (cached_stream_texture_size_.width != natural_size_.width || |
| 470 cached_stream_texture_size_.height != natural_size_.height)) { | 470 cached_stream_texture_size_.height != natural_size_.height)) { |
| 471 stream_texture_factory_->SetStreamTextureSize( | 471 stream_texture_factory_->SetStreamTextureSize( |
| (...skipping 27 matching lines...) Expand all Loading... |
| 499 web_graphics_context->pixelStorei(GL_UNPACK_FLIP_Y_CHROMIUM, false); | 499 web_graphics_context->pixelStorei(GL_UNPACK_FLIP_Y_CHROMIUM, false); |
| 500 web_graphics_context->pixelStorei(GL_UNPACK_PREMULTIPLY_ALPHA_CHROMIUM, | 500 web_graphics_context->pixelStorei(GL_UNPACK_PREMULTIPLY_ALPHA_CHROMIUM, |
| 501 false); | 501 false); |
| 502 | 502 |
| 503 if (mailbox_holder->texture_target == GL_TEXTURE_EXTERNAL_OES) | 503 if (mailbox_holder->texture_target == GL_TEXTURE_EXTERNAL_OES) |
| 504 web_graphics_context->bindTexture(GL_TEXTURE_EXTERNAL_OES, 0); | 504 web_graphics_context->bindTexture(GL_TEXTURE_EXTERNAL_OES, 0); |
| 505 else | 505 else |
| 506 web_graphics_context->bindTexture(GL_TEXTURE_2D, texture); | 506 web_graphics_context->bindTexture(GL_TEXTURE_2D, texture); |
| 507 web_graphics_context->deleteTexture(source_texture); | 507 web_graphics_context->deleteTexture(source_texture); |
| 508 web_graphics_context->flush(); | 508 web_graphics_context->flush(); |
| 509 video_frame->AppendReleaseSyncPoint(web_graphics_context->insertSyncPoint()); |
| 509 return true; | 510 return true; |
| 510 } | 511 } |
| 511 | 512 |
| 512 bool WebMediaPlayerAndroid::hasSingleSecurityOrigin() const { | 513 bool WebMediaPlayerAndroid::hasSingleSecurityOrigin() const { |
| 513 if (info_loader_) | 514 if (info_loader_) |
| 514 return info_loader_->HasSingleOrigin(); | 515 return info_loader_->HasSingleOrigin(); |
| 515 // The info loader may have failed. | 516 // The info loader may have failed. |
| 516 if (player_type_ == MEDIA_PLAYER_TYPE_URL) | 517 if (player_type_ == MEDIA_PLAYER_TYPE_URL) |
| 517 return false; | 518 return false; |
| 518 return true; | 519 return true; |
| (...skipping 1012 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1531 | 1532 |
| 1532 void WebMediaPlayerAndroid::exitFullscreen() { | 1533 void WebMediaPlayerAndroid::exitFullscreen() { |
| 1533 manager_->ExitFullscreen(player_id_); | 1534 manager_->ExitFullscreen(player_id_); |
| 1534 } | 1535 } |
| 1535 | 1536 |
| 1536 bool WebMediaPlayerAndroid::canEnterFullscreen() const { | 1537 bool WebMediaPlayerAndroid::canEnterFullscreen() const { |
| 1537 return manager_->CanEnterFullscreen(frame_); | 1538 return manager_->CanEnterFullscreen(frame_); |
| 1538 } | 1539 } |
| 1539 | 1540 |
| 1540 } // namespace content | 1541 } // namespace content |
| OLD | NEW |