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

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

Issue 1369563002: Compare the full rect in SkCanvasVideoRenderer::Paint for transform. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: sizemedia: rebase Created 5 years, 1 month 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 | « no previous file | ui/gfx/skia_util.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 "gpu/GLES2/gl2extchromium.h" 7 #include "gpu/GLES2/gl2extchromium.h"
8 #include "gpu/command_buffer/client/gles2_interface.h" 8 #include "gpu/command_buffer/client/gles2_interface.h"
9 #include "gpu/command_buffer/common/mailbox_holder.h" 9 #include "gpu/command_buffer/common/mailbox_holder.h"
10 #include "media/base/video_frame.h" 10 #include "media/base/video_frame.h"
11 #include "media/base/yuv_convert.h" 11 #include "media/base/yuv_convert.h"
12 #include "skia/ext/refptr.h" 12 #include "skia/ext/refptr.h"
13 #include "third_party/libyuv/include/libyuv.h" 13 #include "third_party/libyuv/include/libyuv.h"
14 #include "third_party/skia/include/core/SkCanvas.h" 14 #include "third_party/skia/include/core/SkCanvas.h"
15 #include "third_party/skia/include/core/SkImage.h" 15 #include "third_party/skia/include/core/SkImage.h"
16 #include "third_party/skia/include/core/SkImageGenerator.h" 16 #include "third_party/skia/include/core/SkImageGenerator.h"
17 #include "third_party/skia/include/gpu/GrContext.h" 17 #include "third_party/skia/include/gpu/GrContext.h"
18 #include "third_party/skia/include/gpu/GrPaint.h" 18 #include "third_party/skia/include/gpu/GrPaint.h"
19 #include "third_party/skia/include/gpu/GrTexture.h" 19 #include "third_party/skia/include/gpu/GrTexture.h"
20 #include "third_party/skia/include/gpu/GrTextureProvider.h" 20 #include "third_party/skia/include/gpu/GrTextureProvider.h"
21 #include "third_party/skia/include/gpu/SkGr.h" 21 #include "third_party/skia/include/gpu/SkGr.h"
22 #include "ui/gfx/geometry/rect_f.h" 22 #include "ui/gfx/geometry/rect_f.h"
23 #include "ui/gfx/skia_util.h"
23 24
24 // Skia internal format depends on a platform. On Android it is ABGR, on others 25 // Skia internal format depends on a platform. On Android it is ABGR, on others
25 // it is ARGB. 26 // it is ARGB.
26 #if SK_B32_SHIFT == 0 && SK_G32_SHIFT == 8 && SK_R32_SHIFT == 16 && \ 27 #if SK_B32_SHIFT == 0 && SK_G32_SHIFT == 8 && SK_R32_SHIFT == 16 && \
27 SK_A32_SHIFT == 24 28 SK_A32_SHIFT == 24
28 #define LIBYUV_I420_TO_ARGB libyuv::I420ToARGB 29 #define LIBYUV_I420_TO_ARGB libyuv::I420ToARGB
29 #define LIBYUV_I422_TO_ARGB libyuv::I422ToARGB 30 #define LIBYUV_I422_TO_ARGB libyuv::I422ToARGB
30 #define LIBYUV_I444_TO_ARGB libyuv::I444ToARGB 31 #define LIBYUV_I444_TO_ARGB libyuv::I444ToARGB
31 #define LIBYUV_I420ALPHA_TO_ARGB libyuv::I420AlphaToARGB 32 #define LIBYUV_I420ALPHA_TO_ARGB libyuv::I420AlphaToARGB
32 #define LIBYUV_J420_TO_ARGB libyuv::J420ToARGB 33 #define LIBYUV_J420_TO_ARGB libyuv::J420ToARGB
(...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 } 344 }
344 if (!last_image_) // Couldn't create the SkImage. 345 if (!last_image_) // Couldn't create the SkImage.
345 return; 346 return;
346 last_timestamp_ = video_frame->timestamp(); 347 last_timestamp_ = video_frame->timestamp();
347 } 348 }
348 last_image_deleting_timer_.Reset(); 349 last_image_deleting_timer_.Reset();
349 350
350 paint.setXfermodeMode(mode); 351 paint.setXfermodeMode(mode);
351 paint.setFilterQuality(kLow_SkFilterQuality); 352 paint.setFilterQuality(kLow_SkFilterQuality);
352 353
353 const bool need_transform = 354 const bool need_rotation = video_rotation != VIDEO_ROTATION_0;
354 video_rotation != VIDEO_ROTATION_0 || 355 const bool need_scaling =
355 dest_rect.size() != gfx::SizeF(video_frame->visible_rect().size()) || 356 dest_rect.size() !=
356 !dest_rect.origin().IsOrigin(); 357 gfx::SizeF(gfx::SkISizeToSize(last_image_->dimensions()));
358 const bool need_translation = !dest_rect.origin().IsOrigin();
359 bool need_transform = need_rotation || need_scaling || need_translation;
357 if (need_transform) { 360 if (need_transform) {
358 canvas->save(); 361 canvas->save();
359 canvas->translate( 362 canvas->translate(
360 SkFloatToScalar(dest_rect.x() + (dest_rect.width() * 0.5f)), 363 SkFloatToScalar(dest_rect.x() + (dest_rect.width() * 0.5f)),
361 SkFloatToScalar(dest_rect.y() + (dest_rect.height() * 0.5f))); 364 SkFloatToScalar(dest_rect.y() + (dest_rect.height() * 0.5f)));
362 SkScalar angle = SkFloatToScalar(0.0f); 365 SkScalar angle = SkFloatToScalar(0.0f);
363 switch (video_rotation) { 366 switch (video_rotation) {
364 case VIDEO_ROTATION_0: 367 case VIDEO_ROTATION_0:
365 break; 368 break;
366 case VIDEO_ROTATION_90: 369 case VIDEO_ROTATION_90:
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
572 video_frame->UpdateReleaseSyncPoint(&client); 575 video_frame->UpdateReleaseSyncPoint(&client);
573 } 576 }
574 577
575 void SkCanvasVideoRenderer::ResetCache() { 578 void SkCanvasVideoRenderer::ResetCache() {
576 // Clear cached values. 579 // Clear cached values.
577 last_image_ = nullptr; 580 last_image_ = nullptr;
578 last_timestamp_ = kNoTimestamp(); 581 last_timestamp_ = kNoTimestamp();
579 } 582 }
580 583
581 } // namespace media 584 } // namespace media
OLDNEW
« no previous file with comments | « no previous file | ui/gfx/skia_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698