| 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/webmediaplayer_impl.h" | 5 #include "content/renderer/media/webmediaplayer_impl.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <limits> | 8 #include <limits> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 617 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 628 bool flip_y) { | 628 bool flip_y) { |
| 629 scoped_refptr<media::VideoFrame> video_frame = compositor_.GetCurrentFrame(); | 629 scoped_refptr<media::VideoFrame> video_frame = compositor_.GetCurrentFrame(); |
| 630 | 630 |
| 631 TRACE_EVENT0("media", "WebMediaPlayerImpl:copyVideoTextureToPlatformTexture"); | 631 TRACE_EVENT0("media", "WebMediaPlayerImpl:copyVideoTextureToPlatformTexture"); |
| 632 | 632 |
| 633 if (!video_frame) | 633 if (!video_frame) |
| 634 return false; | 634 return false; |
| 635 if (video_frame->format() != media::VideoFrame::NATIVE_TEXTURE) | 635 if (video_frame->format() != media::VideoFrame::NATIVE_TEXTURE) |
| 636 return false; | 636 return false; |
| 637 | 637 |
| 638 gpu::MailboxHolder* mailbox_holder = video_frame->mailbox_holder(); | 638 const gpu::MailboxHolder* mailbox_holder = video_frame->mailbox_holder(); |
| 639 if (mailbox_holder->texture_target != GL_TEXTURE_2D) | 639 if (mailbox_holder->texture_target != GL_TEXTURE_2D) |
| 640 return false; | 640 return false; |
| 641 | 641 |
| 642 // Since this method changes which texture is bound to the TEXTURE_2D target, | 642 // Since this method changes which texture is bound to the TEXTURE_2D target, |
| 643 // ideally it would restore the currently-bound texture before returning. | 643 // ideally it would restore the currently-bound texture before returning. |
| 644 // The cost of getIntegerv is sufficiently high, however, that we want to | 644 // The cost of getIntegerv is sufficiently high, however, that we want to |
| 645 // avoid it in user builds. As a result assume (below) that |texture| is | 645 // avoid it in user builds. As a result assume (below) that |texture| is |
| 646 // bound when this method is called, and only verify this fact when | 646 // bound when this method is called, and only verify this fact when |
| 647 // DCHECK_IS_ON. | 647 // DCHECK_IS_ON. |
| 648 #if DCHECK_IS_ON | 648 #if DCHECK_IS_ON |
| (...skipping 26 matching lines...) Expand all Loading... |
| 675 type); | 675 type); |
| 676 web_graphics_context->pixelStorei(GL_UNPACK_FLIP_Y_CHROMIUM, false); | 676 web_graphics_context->pixelStorei(GL_UNPACK_FLIP_Y_CHROMIUM, false); |
| 677 web_graphics_context->pixelStorei(GL_UNPACK_PREMULTIPLY_ALPHA_CHROMIUM, | 677 web_graphics_context->pixelStorei(GL_UNPACK_PREMULTIPLY_ALPHA_CHROMIUM, |
| 678 false); | 678 false); |
| 679 | 679 |
| 680 // Restore the state for TEXTURE_2D binding point as mentioned above. | 680 // Restore the state for TEXTURE_2D binding point as mentioned above. |
| 681 web_graphics_context->bindTexture(GL_TEXTURE_2D, texture); | 681 web_graphics_context->bindTexture(GL_TEXTURE_2D, texture); |
| 682 | 682 |
| 683 web_graphics_context->deleteTexture(source_texture); | 683 web_graphics_context->deleteTexture(source_texture); |
| 684 web_graphics_context->flush(); | 684 web_graphics_context->flush(); |
| 685 video_frame->AppendReleaseSyncPoint(web_graphics_context->insertSyncPoint()); |
| 685 return true; | 686 return true; |
| 686 } | 687 } |
| 687 | 688 |
| 688 // Helper functions to report media EME related stats to UMA. They follow the | 689 // Helper functions to report media EME related stats to UMA. They follow the |
| 689 // convention of more commonly used macros UMA_HISTOGRAM_ENUMERATION and | 690 // convention of more commonly used macros UMA_HISTOGRAM_ENUMERATION and |
| 690 // UMA_HISTOGRAM_COUNTS. The reason that we cannot use those macros directly is | 691 // UMA_HISTOGRAM_COUNTS. The reason that we cannot use those macros directly is |
| 691 // that UMA_* macros require the names to be constant throughout the process' | 692 // that UMA_* macros require the names to be constant throughout the process' |
| 692 // lifetime. | 693 // lifetime. |
| 693 static void EmeUMAHistogramEnumeration(const std::string& key_system, | 694 static void EmeUMAHistogramEnumeration(const std::string& key_system, |
| 694 const std::string& method, | 695 const std::string& method, |
| (...skipping 645 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1340 | 1341 |
| 1341 if (web_cdm_) { | 1342 if (web_cdm_) { |
| 1342 decryptor_ready_cb.Run(web_cdm_->GetDecryptor()); | 1343 decryptor_ready_cb.Run(web_cdm_->GetDecryptor()); |
| 1343 return; | 1344 return; |
| 1344 } | 1345 } |
| 1345 | 1346 |
| 1346 decryptor_ready_cb_ = decryptor_ready_cb; | 1347 decryptor_ready_cb_ = decryptor_ready_cb; |
| 1347 } | 1348 } |
| 1348 | 1349 |
| 1349 } // namespace content | 1350 } // namespace content |
| OLD | NEW |