| 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 3c234b76e287b3a6564a24ca3a47b879bc2f0ac7..792a95b0af132a7c4c90e2f8cf2e06ae320779e9 100644
|
| --- a/media/filters/skcanvas_video_renderer_unittest.cc
|
| +++ b/media/filters/skcanvas_video_renderer_unittest.cc
|
| @@ -60,9 +60,8 @@ class SkCanvasVideoRendererTest : public testing::Test {
|
| VideoFrame* smaller_frame() { return smaller_frame_.get(); }
|
| VideoFrame* cropped_frame() { return cropped_frame_.get(); }
|
|
|
| - // Getters for canvases that trigger the various painting paths.
|
| - SkCanvas* fast_path_canvas() { return &fast_path_canvas_; }
|
| - SkCanvas* slow_path_canvas() { return &slow_path_canvas_; }
|
| + // Standard canvas.
|
| + SkCanvas* target_canvas() { return &target_canvas_; }
|
|
|
| private:
|
| SkCanvasVideoRenderer renderer_;
|
| @@ -72,19 +71,14 @@ class SkCanvasVideoRendererTest : public testing::Test {
|
| scoped_refptr<VideoFrame> smaller_frame_;
|
| scoped_refptr<VideoFrame> cropped_frame_;
|
|
|
| - SkCanvas fast_path_canvas_;
|
| - SkCanvas slow_path_canvas_;
|
| + SkCanvas target_canvas_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(SkCanvasVideoRendererTest);
|
| };
|
|
|
| -static SkBitmap AllocBitmap(int width, int height, bool isOpaque) {
|
| - SkAlphaType alpha_type = isOpaque ? kOpaque_SkAlphaType : kPremul_SkAlphaType;
|
| +static SkBitmap AllocBitmap(int width, int height) {
|
| SkBitmap bitmap;
|
| -
|
| - bitmap.allocPixels(SkImageInfo::MakeN32(width, height, alpha_type));
|
| - if (!isOpaque)
|
| - bitmap.eraseColor(0);
|
| + bitmap.allocPixels(SkImageInfo::MakeN32(width, height, kPremul_SkAlphaType));
|
| return bitmap;
|
| }
|
|
|
| @@ -100,8 +94,7 @@ SkCanvasVideoRendererTest::SkCanvasVideoRendererTest()
|
| gfx::Rect(6, 6, 8, 6),
|
| gfx::Size(8, 6),
|
| base::TimeDelta::FromMilliseconds(4))),
|
| - fast_path_canvas_(AllocBitmap(kWidth, kHeight, true)),
|
| - slow_path_canvas_(AllocBitmap(kWidth, kHeight, false)) {
|
| + target_canvas_(AllocBitmap(kWidth, kHeight)) {
|
| // Give each frame a unique timestamp.
|
| natural_frame_->set_timestamp(base::TimeDelta::FromMilliseconds(1));
|
| larger_frame_->set_timestamp(base::TimeDelta::FromMilliseconds(2));
|
| @@ -213,172 +206,73 @@ void SkCanvasVideoRendererTest::Paint(VideoFrame* video_frame,
|
| renderer_.Paint(video_frame, canvas, kNaturalRect, 0xFF);
|
| }
|
|
|
| -TEST_F(SkCanvasVideoRendererTest, FastPaint_NoFrame) {
|
| +TEST_F(SkCanvasVideoRendererTest, NoFrame) {
|
| // Test that black gets painted over canvas.
|
| - FillCanvas(fast_path_canvas(), SK_ColorRED);
|
| - PaintWithoutFrame(fast_path_canvas());
|
| - EXPECT_EQ(SK_ColorBLACK, GetColor(fast_path_canvas()));
|
| + FillCanvas(target_canvas(), SK_ColorRED);
|
| + PaintWithoutFrame(target_canvas());
|
| + EXPECT_EQ(SK_ColorBLACK, GetColor(target_canvas()));
|
| }
|
|
|
| -TEST_F(SkCanvasVideoRendererTest, SlowPaint_NoFrame) {
|
| - // Test that black gets painted over canvas.
|
| - FillCanvas(slow_path_canvas(), SK_ColorRED);
|
| - PaintWithoutFrame(slow_path_canvas());
|
| - EXPECT_EQ(SK_ColorBLACK, GetColor(slow_path_canvas()));
|
| +TEST_F(SkCanvasVideoRendererTest, Natural) {
|
| + Paint(natural_frame(), target_canvas(), kRed);
|
| + EXPECT_EQ(SK_ColorRED, GetColor(target_canvas()));
|
| }
|
|
|
| -TEST_F(SkCanvasVideoRendererTest, FastPaint_Natural) {
|
| - Paint(natural_frame(), fast_path_canvas(), kRed);
|
| - EXPECT_EQ(SK_ColorRED, GetColor(fast_path_canvas()));
|
| -}
|
| +TEST_F(SkCanvasVideoRendererTest, Larger) {
|
| + Paint(natural_frame(), target_canvas(), kRed);
|
| + EXPECT_EQ(SK_ColorRED, GetColor(target_canvas()));
|
|
|
| -TEST_F(SkCanvasVideoRendererTest, SlowPaint_Natural) {
|
| - Paint(natural_frame(), slow_path_canvas(), kRed);
|
| - EXPECT_EQ(SK_ColorRED, GetColor(slow_path_canvas()));
|
| + Paint(larger_frame(), target_canvas(), kBlue);
|
| + EXPECT_EQ(SK_ColorBLUE, GetColor(target_canvas()));
|
| }
|
|
|
| -TEST_F(SkCanvasVideoRendererTest, FastPaint_Larger) {
|
| - Paint(natural_frame(), fast_path_canvas(), kRed);
|
| - EXPECT_EQ(SK_ColorRED, GetColor(fast_path_canvas()));
|
| -
|
| - Paint(larger_frame(), fast_path_canvas(), kBlue);
|
| - EXPECT_EQ(SK_ColorBLUE, GetColor(fast_path_canvas()));
|
| -}
|
| -
|
| -TEST_F(SkCanvasVideoRendererTest, SlowPaint_Larger) {
|
| - Paint(natural_frame(), slow_path_canvas(), kRed);
|
| - EXPECT_EQ(SK_ColorRED, GetColor(slow_path_canvas()));
|
| -
|
| - Paint(larger_frame(), slow_path_canvas(), kBlue);
|
| - EXPECT_EQ(SK_ColorBLUE, GetColor(slow_path_canvas()));
|
| -}
|
| -
|
| -TEST_F(SkCanvasVideoRendererTest, FastPaint_Smaller) {
|
| - Paint(natural_frame(), fast_path_canvas(), kRed);
|
| - EXPECT_EQ(SK_ColorRED, GetColor(fast_path_canvas()));
|
| -
|
| - Paint(smaller_frame(), fast_path_canvas(), kBlue);
|
| - EXPECT_EQ(SK_ColorBLUE, GetColor(fast_path_canvas()));
|
| -}
|
| -
|
| -TEST_F(SkCanvasVideoRendererTest, SlowPaint_Smaller) {
|
| - Paint(natural_frame(), slow_path_canvas(), kRed);
|
| - EXPECT_EQ(SK_ColorRED, GetColor(slow_path_canvas()));
|
| -
|
| - Paint(smaller_frame(), slow_path_canvas(), kBlue);
|
| - EXPECT_EQ(SK_ColorBLUE, GetColor(slow_path_canvas()));
|
| -}
|
| +TEST_F(SkCanvasVideoRendererTest, Smaller) {
|
| + Paint(natural_frame(), target_canvas(), kRed);
|
| + EXPECT_EQ(SK_ColorRED, GetColor(target_canvas()));
|
|
|
| -TEST_F(SkCanvasVideoRendererTest, FastPaint_NoTimestamp) {
|
| - VideoFrame* video_frame = natural_frame();
|
| - video_frame->set_timestamp(media::kNoTimestamp());
|
| - Paint(video_frame, fast_path_canvas(), kRed);
|
| - EXPECT_EQ(SK_ColorRED, GetColor(fast_path_canvas()));
|
| + Paint(smaller_frame(), target_canvas(), kBlue);
|
| + EXPECT_EQ(SK_ColorBLUE, GetColor(target_canvas()));
|
| }
|
|
|
| -TEST_F(SkCanvasVideoRendererTest, SlowPaint_NoTimestamp) {
|
| +TEST_F(SkCanvasVideoRendererTest, NoTimestamp) {
|
| VideoFrame* video_frame = natural_frame();
|
| video_frame->set_timestamp(media::kNoTimestamp());
|
| - Paint(video_frame, slow_path_canvas(), kRed);
|
| - EXPECT_EQ(SK_ColorRED, GetColor(slow_path_canvas()));
|
| + Paint(video_frame, target_canvas(), kRed);
|
| + EXPECT_EQ(SK_ColorRED, GetColor(target_canvas()));
|
| }
|
|
|
| -TEST_F(SkCanvasVideoRendererTest, FastPaint_SameVideoFrame) {
|
| - Paint(natural_frame(), fast_path_canvas(), kRed);
|
| - EXPECT_EQ(SK_ColorRED, GetColor(fast_path_canvas()));
|
| -
|
| - // Fast paints always get painted to the canvas.
|
| - Paint(natural_frame(), fast_path_canvas(), kBlue);
|
| - EXPECT_EQ(SK_ColorBLUE, GetColor(fast_path_canvas()));
|
| -}
|
| -
|
| -TEST_F(SkCanvasVideoRendererTest, SlowPaint_SameVideoFrame) {
|
| - Paint(natural_frame(), slow_path_canvas(), kRed);
|
| - EXPECT_EQ(SK_ColorRED, GetColor(slow_path_canvas()));
|
| +TEST_F(SkCanvasVideoRendererTest, SameVideoFrame) {
|
| + Paint(natural_frame(), target_canvas(), kRed);
|
| + EXPECT_EQ(SK_ColorRED, GetColor(target_canvas()));
|
|
|
| // Slow paints can get cached, expect the old color value.
|
| - Paint(natural_frame(), slow_path_canvas(), kBlue);
|
| - EXPECT_EQ(SK_ColorRED, GetColor(slow_path_canvas()));
|
| + Paint(natural_frame(), target_canvas(), kBlue);
|
| + EXPECT_EQ(SK_ColorRED, GetColor(target_canvas()));
|
| }
|
|
|
| -TEST_F(SkCanvasVideoRendererTest, FastPaint_CroppedFrame) {
|
| - Paint(cropped_frame(), fast_path_canvas(), kNone);
|
| +TEST_F(SkCanvasVideoRendererTest, CroppedFrame) {
|
| + Paint(cropped_frame(), target_canvas(), kNone);
|
| // Check the corners.
|
| - EXPECT_EQ(SK_ColorBLACK, GetColorAt(fast_path_canvas(), 0, 0));
|
| - EXPECT_EQ(SK_ColorRED, GetColorAt(fast_path_canvas(), kWidth - 1, 0));
|
| - EXPECT_EQ(SK_ColorGREEN, GetColorAt(fast_path_canvas(), 0, kHeight - 1));
|
| - EXPECT_EQ(SK_ColorBLUE, GetColorAt(fast_path_canvas(), kWidth - 1,
|
| - kHeight - 1));
|
| + EXPECT_EQ(SK_ColorBLACK, GetColorAt(target_canvas(), 0, 0));
|
| + EXPECT_EQ(SK_ColorRED, GetColorAt(target_canvas(), kWidth - 1, 0));
|
| + EXPECT_EQ(SK_ColorGREEN, GetColorAt(target_canvas(), 0, kHeight - 1));
|
| + EXPECT_EQ(SK_ColorBLUE, GetColorAt(target_canvas(), kWidth - 1,
|
| + kHeight - 1));
|
| // Check the interior along the border between color regions. Note that we're
|
| // bilinearly upscaling, so we'll need to take care to pick sample points that
|
| // are just outside the "zone of resampling".
|
| - // TODO(sheu): commenting out two checks due to http://crbug.com/158462.
|
| -#if 0
|
| - EXPECT_EQ(SK_ColorBLACK, GetColorAt(fast_path_canvas(), kWidth * 1 / 8 - 1,
|
| - kHeight * 1 / 6 - 1));
|
| -#endif
|
| - EXPECT_EQ(SK_ColorRED, GetColorAt(fast_path_canvas(), kWidth * 3 / 8,
|
| - kHeight * 1 / 6 - 1));
|
| -#if 0
|
| - EXPECT_EQ(SK_ColorGREEN, GetColorAt(fast_path_canvas(), kWidth * 1 / 8 - 1,
|
| - kHeight * 3 / 6));
|
| -#endif
|
| - EXPECT_EQ(SK_ColorBLUE, GetColorAt(fast_path_canvas(), kWidth * 3 / 8,
|
| - kHeight * 3 / 6));
|
| -}
|
| -
|
| -TEST_F(SkCanvasVideoRendererTest, SlowPaint_CroppedFrame) {
|
| - Paint(cropped_frame(), slow_path_canvas(), kNone);
|
| - // Check the corners.
|
| - EXPECT_EQ(SK_ColorBLACK, GetColorAt(slow_path_canvas(), 0, 0));
|
| - EXPECT_EQ(SK_ColorRED, GetColorAt(slow_path_canvas(), kWidth - 1, 0));
|
| - EXPECT_EQ(SK_ColorGREEN, GetColorAt(slow_path_canvas(), 0, kHeight - 1));
|
| - EXPECT_EQ(SK_ColorBLUE, GetColorAt(slow_path_canvas(), kWidth - 1,
|
| - kHeight - 1));
|
| - // Check the interior along the border between color regions. Note that we're
|
| - // bilinearly upscaling, so we'll need to take care to pick sample points that
|
| - // are just outside the "zone of resampling".
|
| - EXPECT_EQ(SK_ColorBLACK, GetColorAt(slow_path_canvas(), kWidth * 1 / 8 - 1,
|
| - kHeight * 1 / 6 - 1));
|
| - EXPECT_EQ(SK_ColorRED, GetColorAt(slow_path_canvas(), kWidth * 3 / 8,
|
| - kHeight * 1 / 6 - 1));
|
| - EXPECT_EQ(SK_ColorGREEN, GetColorAt(slow_path_canvas(), kWidth * 1 / 8 - 1,
|
| - kHeight * 3 / 6));
|
| - EXPECT_EQ(SK_ColorBLUE, GetColorAt(slow_path_canvas(), kWidth * 3 / 8,
|
| - kHeight * 3 / 6));
|
| -}
|
| -
|
| -TEST_F(SkCanvasVideoRendererTest, FastPaint_CroppedFrame_NoScaling) {
|
| - SkCanvas canvas(AllocBitmap(kWidth, kHeight, true /* opaque */));
|
| - const gfx::Rect crop_rect = cropped_frame()->visible_rect();
|
| -
|
| - // Force painting to a non-zero position on the destination bitmap, to check
|
| - // if the coordinates are calculated properly.
|
| - const int offset_x = 10;
|
| - const int offset_y = 15;
|
| - canvas.translate(offset_x, offset_y);
|
| -
|
| - // Create a destination canvas with dimensions and scale which would not
|
| - // cause scaling. This is to detect the code path using libyuv in FastPaint.
|
| - canvas.scale(static_cast<SkScalar>(crop_rect.width()) / kWidth,
|
| - static_cast<SkScalar>(crop_rect.height()) / kHeight);
|
| -
|
| - Paint(cropped_frame(), &canvas, kNone);
|
| -
|
| - // Check the corners.
|
| - EXPECT_EQ(SK_ColorBLACK, GetColorAt(&canvas, offset_x, offset_y));
|
| - EXPECT_EQ(SK_ColorRED,
|
| - GetColorAt(&canvas, offset_x + crop_rect.width() - 1, offset_y));
|
| - EXPECT_EQ(SK_ColorGREEN,
|
| - GetColorAt(&canvas, offset_x, offset_y + crop_rect.height() - 1));
|
| - EXPECT_EQ(SK_ColorBLUE,
|
| - GetColorAt(&canvas,
|
| - offset_x + crop_rect.width() - 1,
|
| - offset_y + crop_rect.height() - 1));
|
| + EXPECT_EQ(SK_ColorBLACK, GetColorAt(target_canvas(), kWidth * 1 / 8 - 1,
|
| + kHeight * 1 / 6 - 1));
|
| + EXPECT_EQ(SK_ColorRED, GetColorAt(target_canvas(), kWidth * 3 / 8,
|
| + kHeight * 1 / 6 - 1));
|
| + EXPECT_EQ(SK_ColorGREEN, GetColorAt(target_canvas(), kWidth * 1 / 8 - 1,
|
| + kHeight * 3 / 6));
|
| + EXPECT_EQ(SK_ColorBLUE, GetColorAt(target_canvas(), kWidth * 3 / 8,
|
| + kHeight * 3 / 6));
|
| }
|
|
|
| -TEST_F(SkCanvasVideoRendererTest, SlowPaint_CroppedFrame_NoScaling) {
|
| - SkCanvas canvas(AllocBitmap(kWidth, kHeight, false /* opaque */));
|
| +TEST_F(SkCanvasVideoRendererTest, CroppedFrame_NoScaling) {
|
| + SkCanvas canvas(AllocBitmap(kWidth, kHeight));
|
| const gfx::Rect crop_rect = cropped_frame()->visible_rect();
|
|
|
| // Force painting to a non-zero position on the destination bitmap, to check
|
|
|