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

Unified Diff: media/filters/skcanvas_video_renderer_unittest.cc

Issue 441303002: 2D Canvas doesn't blend video with the destination buffer. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase to ToT. improve TODO comments Created 6 years, 4 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 2a8b174837102a43f7ae22434b4b922db02e05c9..358ce0ab1e03184013e171da84fbd76bf80c0850 100644
--- a/media/filters/skcanvas_video_renderer_unittest.cc
+++ b/media/filters/skcanvas_video_renderer_unittest.cc
@@ -56,8 +56,11 @@ class SkCanvasVideoRendererTest : public testing::Test {
void PaintRotated(VideoFrame* video_frame,
SkCanvas* canvas,
Color color,
+ SkXfermode::Mode mode,
VideoRotation video_rotation);
+ void Copy(VideoFrame* video_frame, SkCanvas* canvas);
+
// Getters for various frame sizes.
VideoFrame* natural_frame() { return natural_frame_.get(); }
VideoFrame* larger_frame() { return larger_frame_.get(); }
@@ -189,18 +192,25 @@ SkCanvasVideoRendererTest::SkCanvasVideoRendererTest()
SkCanvasVideoRendererTest::~SkCanvasVideoRendererTest() {}
void SkCanvasVideoRendererTest::PaintWithoutFrame(SkCanvas* canvas) {
- renderer_.Paint(NULL, canvas, kNaturalRect, 0xFF, VIDEO_ROTATION_0);
+ renderer_.Paint(NULL,
+ canvas,
+ kNaturalRect,
+ 0xFF,
+ SkXfermode::kSrcOver_Mode,
+ VIDEO_ROTATION_0);
}
void SkCanvasVideoRendererTest::Paint(VideoFrame* video_frame,
SkCanvas* canvas,
Color color) {
- PaintRotated(video_frame, canvas, color, VIDEO_ROTATION_0);
+ PaintRotated(
+ video_frame, canvas, color, SkXfermode::kSrcOver_Mode, VIDEO_ROTATION_0);
}
void SkCanvasVideoRendererTest::PaintRotated(VideoFrame* video_frame,
SkCanvas* canvas,
Color color,
+ SkXfermode::Mode mode,
VideoRotation video_rotation) {
switch (color) {
case kNone:
@@ -215,7 +225,13 @@ void SkCanvasVideoRendererTest::PaintRotated(VideoFrame* video_frame,
media::FillYUV(video_frame, 29, 255, 107);
break;
}
- renderer_.Paint(video_frame, canvas, kNaturalRect, 0xFF, video_rotation);
+ renderer_.Paint(
+ video_frame, canvas, kNaturalRect, 0xFF, mode, video_rotation);
+}
+
+void SkCanvasVideoRendererTest::Copy(VideoFrame* video_frame,
+ SkCanvas* canvas) {
+ renderer_.Copy(video_frame, canvas);
}
TEST_F(SkCanvasVideoRendererTest, NoFrame) {
@@ -226,11 +242,31 @@ TEST_F(SkCanvasVideoRendererTest, NoFrame) {
}
TEST_F(SkCanvasVideoRendererTest, TransparentFrame) {
- // Test that we don't blend with existing canvas contents.
FillCanvas(target_canvas(), SK_ColorRED);
- Paint(VideoFrame::CreateTransparentFrame(gfx::Size(kWidth, kHeight)),
- target_canvas(),
- kNone);
+ PaintRotated(VideoFrame::CreateTransparentFrame(gfx::Size(kWidth, kHeight)),
+ target_canvas(),
+ kNone,
+ SkXfermode::kSrcOver_Mode,
+ VIDEO_ROTATION_0);
+ EXPECT_EQ(static_cast<SkColor>(SK_ColorRED), GetColor(target_canvas()));
+}
+
+TEST_F(SkCanvasVideoRendererTest, TransparentFrameSrcMode) {
+ FillCanvas(target_canvas(), SK_ColorRED);
+ // SRC mode completely overwrites the buffer.
+ PaintRotated(VideoFrame::CreateTransparentFrame(gfx::Size(kWidth, kHeight)),
+ target_canvas(),
+ kNone,
+ SkXfermode::kSrc_Mode,
+ VIDEO_ROTATION_0);
+ EXPECT_EQ(static_cast<SkColor>(SK_ColorTRANSPARENT),
+ GetColor(target_canvas()));
+}
+
+TEST_F(SkCanvasVideoRendererTest, CopyTransparentFrame) {
+ FillCanvas(target_canvas(), SK_ColorRED);
+ Copy(VideoFrame::CreateTransparentFrame(gfx::Size(kWidth, kHeight)),
+ target_canvas());
EXPECT_EQ(static_cast<SkColor>(SK_ColorTRANSPARENT),
GetColor(target_canvas()));
}
@@ -325,7 +361,11 @@ 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, kNone, VIDEO_ROTATION_90);
+ PaintRotated(cropped_frame(),
+ &canvas,
+ kNone,
+ SkXfermode::kSrcOver_Mode,
+ VIDEO_ROTATION_90);
// Check the corners.
EXPECT_EQ(SK_ColorGREEN, GetColorAt(&canvas, 0, 0));
EXPECT_EQ(SK_ColorBLACK, GetColorAt(&canvas, kWidth - 1, 0));
@@ -336,7 +376,11 @@ 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, kNone, VIDEO_ROTATION_180);
+ PaintRotated(cropped_frame(),
+ &canvas,
+ kNone,
+ SkXfermode::kSrcOver_Mode,
+ VIDEO_ROTATION_180);
// Check the corners.
EXPECT_EQ(SK_ColorBLUE, GetColorAt(&canvas, 0, 0));
EXPECT_EQ(SK_ColorGREEN, GetColorAt(&canvas, kWidth - 1, 0));
@@ -347,7 +391,11 @@ 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, kNone, VIDEO_ROTATION_270);
+ PaintRotated(cropped_frame(),
+ &canvas,
+ kNone,
+ SkXfermode::kSrcOver_Mode,
+ VIDEO_ROTATION_270);
// Check the corners.
EXPECT_EQ(SK_ColorRED, GetColorAt(&canvas, 0, 0));
EXPECT_EQ(SK_ColorBLUE, GetColorAt(&canvas, kWidth - 1, 0));
« 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