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

Unified Diff: media/filters/skcanvas_video_renderer_unittest.cc

Issue 619343003: Optimize to copy from rotated video to canvas. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add unittests Created 6 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/filters/skcanvas_video_renderer.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/filters/skcanvas_video_renderer_unittest.cc
diff --git a/media/filters/skcanvas_video_renderer_unittest.cc b/media/filters/skcanvas_video_renderer_unittest.cc
index e11c2963fb980282473e14d3a262c3d2ab612943..4bd2a18f919b5ce7ad0e63c51a065f8d808ecb57 100644
--- a/media/filters/skcanvas_video_renderer_unittest.cc
+++ b/media/filters/skcanvas_video_renderer_unittest.cc
@@ -57,6 +57,7 @@ class SkCanvasVideoRendererTest : public testing::Test {
Color color);
void PaintRotated(const scoped_refptr<VideoFrame>& video_frame,
SkCanvas* canvas,
+ const gfx::RectF& dest_rect,
Color color,
SkXfermode::Mode mode,
VideoRotation video_rotation);
@@ -206,13 +207,18 @@ void SkCanvasVideoRendererTest::Paint(
const scoped_refptr<VideoFrame>& video_frame,
SkCanvas* canvas,
Color color) {
- PaintRotated(
- video_frame, canvas, color, SkXfermode::kSrcOver_Mode, VIDEO_ROTATION_0);
+ PaintRotated(video_frame,
+ canvas,
+ kNaturalRect,
+ color,
+ SkXfermode::kSrcOver_Mode,
+ VIDEO_ROTATION_0);
}
void SkCanvasVideoRendererTest::PaintRotated(
const scoped_refptr<VideoFrame>& video_frame,
SkCanvas* canvas,
+ const gfx::RectF& dest_rect,
Color color,
SkXfermode::Mode mode,
VideoRotation video_rotation) {
@@ -229,8 +235,7 @@ void SkCanvasVideoRendererTest::PaintRotated(
media::FillYUV(video_frame.get(), 29, 255, 107);
break;
}
- renderer_.Paint(
- video_frame, canvas, kNaturalRect, 0xFF, mode, video_rotation);
+ renderer_.Paint(video_frame, canvas, dest_rect, 0xFF, mode, video_rotation);
}
void SkCanvasVideoRendererTest::Copy(
@@ -251,6 +256,7 @@ TEST_F(SkCanvasVideoRendererTest, TransparentFrame) {
PaintRotated(
VideoFrame::CreateTransparentFrame(gfx::Size(kWidth, kHeight)).get(),
target_canvas(),
+ kNaturalRect,
kNone,
SkXfermode::kSrcOver_Mode,
VIDEO_ROTATION_0);
@@ -263,6 +269,7 @@ TEST_F(SkCanvasVideoRendererTest, TransparentFrameSrcMode) {
PaintRotated(
VideoFrame::CreateTransparentFrame(gfx::Size(kWidth, kHeight)).get(),
target_canvas(),
+ kNaturalRect,
kNone,
SkXfermode::kSrc_Mode,
VIDEO_ROTATION_0);
@@ -367,9 +374,9 @@ TEST_F(SkCanvasVideoRendererTest, CroppedFrame_NoScaling) {
TEST_F(SkCanvasVideoRendererTest, Video_Rotation_90) {
SkCanvas canvas(AllocBitmap(kWidth, kHeight));
- const gfx::Rect crop_rect = cropped_frame()->visible_rect();
PaintRotated(cropped_frame(),
&canvas,
+ kNaturalRect,
kNone,
SkXfermode::kSrcOver_Mode,
VIDEO_ROTATION_90);
@@ -382,9 +389,9 @@ TEST_F(SkCanvasVideoRendererTest, Video_Rotation_90) {
TEST_F(SkCanvasVideoRendererTest, Video_Rotation_180) {
SkCanvas canvas(AllocBitmap(kWidth, kHeight));
- const gfx::Rect crop_rect = cropped_frame()->visible_rect();
PaintRotated(cropped_frame(),
&canvas,
+ kNaturalRect,
kNone,
SkXfermode::kSrcOver_Mode,
VIDEO_ROTATION_180);
@@ -397,9 +404,9 @@ TEST_F(SkCanvasVideoRendererTest, Video_Rotation_180) {
TEST_F(SkCanvasVideoRendererTest, Video_Rotation_270) {
SkCanvas canvas(AllocBitmap(kWidth, kHeight));
- const gfx::Rect crop_rect = cropped_frame()->visible_rect();
PaintRotated(cropped_frame(),
&canvas,
+ kNaturalRect,
kNone,
SkXfermode::kSrcOver_Mode,
VIDEO_ROTATION_270);
@@ -410,4 +417,93 @@ TEST_F(SkCanvasVideoRendererTest, Video_Rotation_270) {
EXPECT_EQ(SK_ColorBLACK, GetColorAt(&canvas, 0, kHeight - 1));
}
+TEST_F(SkCanvasVideoRendererTest, Video_Translate) {
+ SkCanvas canvas(AllocBitmap(kWidth, kHeight));
+ FillCanvas(&canvas, SK_ColorMAGENTA);
+
+ PaintRotated(cropped_frame(),
+ &canvas,
+ gfx::Rect(kWidth / 2, kHeight / 2, kWidth / 2, kHeight / 2),
+ kNone,
+ SkXfermode::kSrcOver_Mode,
+ VIDEO_ROTATION_0);
+ // Check the corners of quadrant 2 and 4.
+ EXPECT_EQ(SK_ColorMAGENTA, GetColorAt(&canvas, 0, 0));
+ EXPECT_EQ(SK_ColorMAGENTA, GetColorAt(&canvas, (kWidth / 2) - 1, 0));
+ EXPECT_EQ(SK_ColorMAGENTA,
+ GetColorAt(&canvas, (kWidth / 2) - 1, (kHeight / 2) - 1));
+ EXPECT_EQ(SK_ColorMAGENTA, GetColorAt(&canvas, 0, (kHeight / 2) - 1));
+ EXPECT_EQ(SK_ColorBLACK, GetColorAt(&canvas, kWidth / 2, kHeight / 2));
+ EXPECT_EQ(SK_ColorRED, GetColorAt(&canvas, kWidth - 1, kHeight / 2));
+ EXPECT_EQ(SK_ColorBLUE, GetColorAt(&canvas, kWidth - 1, kHeight - 1));
+ EXPECT_EQ(SK_ColorGREEN, GetColorAt(&canvas, kWidth / 2, kHeight - 1));
+}
+
+TEST_F(SkCanvasVideoRendererTest, Video_Translate_Rotation_90) {
+ SkCanvas canvas(AllocBitmap(kWidth, kHeight));
+ FillCanvas(&canvas, SK_ColorMAGENTA);
+
+ const gfx::Rect crop_rect = cropped_frame()->visible_rect();
+ PaintRotated(cropped_frame(),
+ &canvas,
+ gfx::Rect(kWidth / 2, kHeight / 2, kWidth / 2, kHeight / 2),
+ kNone,
+ SkXfermode::kSrcOver_Mode,
+ VIDEO_ROTATION_90);
+ // Check the corners of quadrant 2 and 4.
+ EXPECT_EQ(SK_ColorMAGENTA, GetColorAt(&canvas, 0, 0));
+ EXPECT_EQ(SK_ColorMAGENTA, GetColorAt(&canvas, (kWidth / 2) - 1, 0));
+ EXPECT_EQ(SK_ColorMAGENTA,
+ GetColorAt(&canvas, (kWidth / 2) - 1, (kHeight / 2) - 1));
+ EXPECT_EQ(SK_ColorMAGENTA, GetColorAt(&canvas, 0, (kHeight / 2) - 1));
+ EXPECT_EQ(SK_ColorGREEN, GetColorAt(&canvas, kWidth / 2, kHeight / 2));
+ EXPECT_EQ(SK_ColorBLACK, GetColorAt(&canvas, kWidth - 1, kHeight / 2));
+ EXPECT_EQ(SK_ColorRED, GetColorAt(&canvas, kWidth - 1, kHeight - 1));
+ EXPECT_EQ(SK_ColorBLUE, GetColorAt(&canvas, kWidth / 2, kHeight - 1));
+}
+
+TEST_F(SkCanvasVideoRendererTest, Video_Translate_Rotation_180) {
+ SkCanvas canvas(AllocBitmap(kWidth, kHeight));
+ FillCanvas(&canvas, SK_ColorMAGENTA);
+
+ PaintRotated(cropped_frame(),
+ &canvas,
+ gfx::Rect(kWidth / 2, kHeight / 2, kWidth / 2, kHeight / 2),
+ kNone,
+ SkXfermode::kSrcOver_Mode,
+ VIDEO_ROTATION_180);
+ // Check the corners of quadrant 2 and 4.
+ EXPECT_EQ(SK_ColorMAGENTA, GetColorAt(&canvas, 0, 0));
+ EXPECT_EQ(SK_ColorMAGENTA, GetColorAt(&canvas, (kWidth / 2) - 1, 0));
+ EXPECT_EQ(SK_ColorMAGENTA,
+ GetColorAt(&canvas, (kWidth / 2) - 1, (kHeight / 2) - 1));
+ EXPECT_EQ(SK_ColorMAGENTA, GetColorAt(&canvas, 0, (kHeight / 2) - 1));
+ EXPECT_EQ(SK_ColorBLUE, GetColorAt(&canvas, kWidth / 2, kHeight / 2));
+ EXPECT_EQ(SK_ColorGREEN, GetColorAt(&canvas, kWidth - 1, kHeight / 2));
+ EXPECT_EQ(SK_ColorBLACK, GetColorAt(&canvas, kWidth - 1, kHeight - 1));
+ EXPECT_EQ(SK_ColorRED, GetColorAt(&canvas, kWidth / 2, kHeight - 1));
+}
+
+TEST_F(SkCanvasVideoRendererTest, Video_Translate_Rotation_270) {
+ SkCanvas canvas(AllocBitmap(kWidth, kHeight));
+ FillCanvas(&canvas, SK_ColorMAGENTA);
+
+ PaintRotated(cropped_frame(),
+ &canvas,
+ gfx::Rect(kWidth / 2, kHeight / 2, kWidth / 2, kHeight / 2),
+ kNone,
+ SkXfermode::kSrcOver_Mode,
+ VIDEO_ROTATION_270);
+ // Check the corners of quadrant 2 and 4.
+ EXPECT_EQ(SK_ColorMAGENTA, GetColorAt(&canvas, 0, 0));
+ EXPECT_EQ(SK_ColorMAGENTA, GetColorAt(&canvas, (kWidth / 2) - 1, 0));
+ EXPECT_EQ(SK_ColorMAGENTA,
+ GetColorAt(&canvas, (kWidth / 2) - 1, (kHeight / 2) - 1));
+ EXPECT_EQ(SK_ColorMAGENTA, GetColorAt(&canvas, 0, (kHeight / 2) - 1));
+ EXPECT_EQ(SK_ColorRED, GetColorAt(&canvas, kWidth / 2, kHeight / 2));
+ EXPECT_EQ(SK_ColorBLUE, GetColorAt(&canvas, kWidth - 1, kHeight / 2));
+ EXPECT_EQ(SK_ColorGREEN, GetColorAt(&canvas, kWidth - 1, kHeight - 1));
+ EXPECT_EQ(SK_ColorBLACK, GetColorAt(&canvas, kWidth / 2, kHeight - 1));
+}
+
} // namespace media
« no previous file with comments | « media/filters/skcanvas_video_renderer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698