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

Side by Side Diff: media/renderers/skcanvas_video_renderer.cc

Issue 2706453003: switch to new ImageGenerator API (Closed)
Patch Set: fix new site in tile_manager_unittest.cc Created 3 years, 10 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 | « content/renderer/render_thread_impl.cc ('k') | skia/config/SkUserConfig.h » ('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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/renderers/skcanvas_video_renderer.h" 5 #include "media/renderers/skcanvas_video_renderer.h"
6 6
7 #include <GLES3/gl3.h> 7 #include <GLES3/gl3.h>
8 #include <limits> 8 #include <limits>
9 9
10 #include "base/macros.h" 10 #include "base/macros.h"
11 #include "base/memory/ptr_util.h"
11 #include "cc/paint/paint_canvas.h" 12 #include "cc/paint/paint_canvas.h"
12 #include "cc/paint/paint_flags.h" 13 #include "cc/paint/paint_flags.h"
13 #include "gpu/GLES2/gl2extchromium.h" 14 #include "gpu/GLES2/gl2extchromium.h"
14 #include "gpu/command_buffer/client/gles2_interface.h" 15 #include "gpu/command_buffer/client/gles2_interface.h"
15 #include "gpu/command_buffer/common/mailbox_holder.h" 16 #include "gpu/command_buffer/common/mailbox_holder.h"
16 #include "media/base/data_buffer.h" 17 #include "media/base/data_buffer.h"
17 #include "media/base/video_frame.h" 18 #include "media/base/video_frame.h"
18 #include "skia/ext/texture_handle.h" 19 #include "skia/ext/texture_handle.h"
19 #include "third_party/libyuv/include/libyuv.h" 20 #include "third_party/libyuv/include/libyuv.h"
20 #include "third_party/skia/include/core/SkImage.h" 21 #include "third_party/skia/include/core/SkImage.h"
(...skipping 910 matching lines...) Expand 10 before | Expand all | Expand 10 after
931 DCHECK(context_3d.gr_context); 932 DCHECK(context_3d.gr_context);
932 DCHECK(context_3d.gl); 933 DCHECK(context_3d.gl);
933 if (media::VideoFrame::NumPlanes(video_frame->format()) > 1) { 934 if (media::VideoFrame::NumPlanes(video_frame->format()) > 1) {
934 last_image_ = 935 last_image_ =
935 NewSkImageFromVideoFrameYUVTextures(video_frame.get(), context_3d); 936 NewSkImageFromVideoFrameYUVTextures(video_frame.get(), context_3d);
936 } else { 937 } else {
937 last_image_ = 938 last_image_ =
938 NewSkImageFromVideoFrameNative(video_frame.get(), context_3d); 939 NewSkImageFromVideoFrameNative(video_frame.get(), context_3d);
939 } 940 }
940 } else { 941 } else {
941 auto* video_generator = new VideoImageGenerator(video_frame); 942 last_image_ = SkImage::MakeFromGenerator(
942 last_image_ = SkImage::MakeFromGenerator(video_generator); 943 base::MakeUnique<VideoImageGenerator>(video_frame));
943 } 944 }
944 CorrectLastImageDimensions(gfx::RectToSkIRect(video_frame->visible_rect())); 945 CorrectLastImageDimensions(gfx::RectToSkIRect(video_frame->visible_rect()));
945 if (!last_image_) // Couldn't create the SkImage. 946 if (!last_image_) // Couldn't create the SkImage.
946 return false; 947 return false;
947 last_timestamp_ = video_frame->timestamp(); 948 last_timestamp_ = video_frame->timestamp();
948 } 949 }
949 last_image_deleting_timer_.Reset(); 950 last_image_deleting_timer_.Reset();
950 DCHECK(!!last_image_); 951 DCHECK(!!last_image_);
951 return true; 952 return true;
952 } 953 }
953 954
954 void SkCanvasVideoRenderer::CorrectLastImageDimensions( 955 void SkCanvasVideoRenderer::CorrectLastImageDimensions(
955 const SkIRect& visible_rect) { 956 const SkIRect& visible_rect) {
956 last_image_dimensions_for_testing_ = visible_rect.size(); 957 last_image_dimensions_for_testing_ = visible_rect.size();
957 if (!last_image_) 958 if (!last_image_)
958 return; 959 return;
959 if (last_image_->dimensions() != visible_rect.size() && 960 if (last_image_->dimensions() != visible_rect.size() &&
960 last_image_->bounds().contains(visible_rect)) { 961 last_image_->bounds().contains(visible_rect)) {
961 last_image_ = last_image_->makeSubset(visible_rect); 962 last_image_ = last_image_->makeSubset(visible_rect);
962 } 963 }
963 } 964 }
964 965
965 SkISize SkCanvasVideoRenderer::LastImageDimensionsForTesting() { 966 SkISize SkCanvasVideoRenderer::LastImageDimensionsForTesting() {
966 return last_image_dimensions_for_testing_; 967 return last_image_dimensions_for_testing_;
967 } 968 }
968 969
969 } // namespace media 970 } // namespace media
OLDNEW
« no previous file with comments | « content/renderer/render_thread_impl.cc ('k') | skia/config/SkUserConfig.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698