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

Side by Side Diff: media/gpu/rendering_helper.cc

Issue 2927893002: Remove FORMAT_RGB from gfx::PngCodec (Closed)
Patch Set: Compile fixes Created 3 years, 6 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
« no previous file with comments | « media/gpu/rendering_helper.h ('k') | media/gpu/video_decode_accelerator_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "media/gpu/rendering_helper.h" 5 #include "media/gpu/rendering_helper.h"
6 6
7 #include <string.h> 7 #include <string.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <memory> 10 #include <memory>
(...skipping 692 matching lines...) Expand 10 before | Expand all | Expand 10 after
703 task_runner_ = nullptr; 703 task_runner_ = nullptr;
704 gl_context_ = NULL; 704 gl_context_ = NULL;
705 gl_surface_ = NULL; 705 gl_surface_ = NULL;
706 706
707 render_as_thumbnails_ = false; 707 render_as_thumbnails_ = false;
708 frame_count_ = 0; 708 frame_count_ = 0;
709 thumbnails_fbo_id_ = 0; 709 thumbnails_fbo_id_ = 0;
710 thumbnails_texture_id_ = 0; 710 thumbnails_texture_id_ = 0;
711 } 711 }
712 712
713 void RenderingHelper::GetThumbnailsAsRGB(std::vector<unsigned char>* rgb, 713 void RenderingHelper::GetThumbnailsAsRGBA(std::vector<unsigned char>* rgba,
714 bool* alpha_solid, 714 base::WaitableEvent* done) {
715 base::WaitableEvent* done) {
716 CHECK(render_as_thumbnails_); 715 CHECK(render_as_thumbnails_);
717 716
718 const size_t num_pixels = thumbnails_fbo_size_.GetArea(); 717 const size_t num_pixels = thumbnails_fbo_size_.GetArea();
719 std::vector<unsigned char> rgba; 718 rgba->resize(num_pixels * 4);
720 rgba.resize(num_pixels * 4);
721 glBindFramebufferEXT(GL_FRAMEBUFFER, thumbnails_fbo_id_); 719 glBindFramebufferEXT(GL_FRAMEBUFFER, thumbnails_fbo_id_);
722 glPixelStorei(GL_PACK_ALIGNMENT, 1); 720 glPixelStorei(GL_PACK_ALIGNMENT, 1);
723 // We can only count on GL_RGBA/GL_UNSIGNED_BYTE support. 721 // We can only count on GL_RGBA/GL_UNSIGNED_BYTE support.
724 glReadPixels(0, 0, 722 glReadPixels(0, 0, thumbnails_fbo_size_.width(),
725 thumbnails_fbo_size_.width(), thumbnails_fbo_size_.height(), 723 thumbnails_fbo_size_.height(), GL_RGBA, GL_UNSIGNED_BYTE,
726 GL_RGBA, 724 &(*rgba)[0]);
727 GL_UNSIGNED_BYTE,
728 &rgba[0]);
729 glBindFramebufferEXT(GL_FRAMEBUFFER, 725 glBindFramebufferEXT(GL_FRAMEBUFFER,
730 gl_surface_->GetBackingFramebufferObject()); 726 gl_surface_->GetBackingFramebufferObject());
731 rgb->resize(num_pixels * 3);
732 // Drop the alpha channel, but check as we go that it is all 0xff.
733 bool solid = true;
734 unsigned char* rgb_ptr = &((*rgb)[0]);
735 unsigned char* rgba_ptr = &rgba[0];
736 for (size_t i = 0; i < num_pixels; ++i) {
737 *rgb_ptr++ = *rgba_ptr++;
738 *rgb_ptr++ = *rgba_ptr++;
739 *rgb_ptr++ = *rgba_ptr++;
740 solid = solid && (*rgba_ptr == 0xff);
741 rgba_ptr++;
742 }
743 *alpha_solid = solid;
744 727
745 done->Signal(); 728 done->Signal();
746 } 729 }
747 730
748 void RenderingHelper::Flush(size_t window_id) { 731 void RenderingHelper::Flush(size_t window_id) {
749 videos_[window_id].is_flushing = true; 732 videos_[window_id].is_flushing = true;
750 } 733 }
751 734
752 void RenderingHelper::RenderContent() { 735 void RenderingHelper::RenderContent() {
753 CHECK(task_runner_->BelongsToCurrentThread()); 736 CHECK(task_runner_->BelongsToCurrentThread());
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
912 // When the rendering falls behind, drops frames. 895 // When the rendering falls behind, drops frames.
913 while (scheduled_render_time_ < target) { 896 while (scheduled_render_time_ < target) {
914 scheduled_render_time_ += frame_duration_; 897 scheduled_render_time_ += frame_duration_;
915 DropOneFrameForAllVideos(); 898 DropOneFrameForAllVideos();
916 } 899 }
917 900
918 task_runner_->PostDelayedTask(FROM_HERE, render_task_.callback(), 901 task_runner_->PostDelayedTask(FROM_HERE, render_task_.callback(),
919 target - now); 902 target - now);
920 } 903 }
921 } // namespace media 904 } // namespace media
OLDNEW
« no previous file with comments | « media/gpu/rendering_helper.h ('k') | media/gpu/video_decode_accelerator_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698