| // Copyright 2021 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "media/base/video_aspect_ratio.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| #include "ui/gfx/geometry/rect.h" |
| #include "ui/gfx/geometry/size.h" |
| |
| namespace media { |
| |
| namespace { |
| |
| constexpr gfx::Rect kRect_4_3(0, 0, 4, 3); |
| constexpr gfx::Rect kRect_16_9(0, 0, 16, 9); |
| |
| } // namespace |
| |
| TEST(VideoAspectRatioTest, DefaultConstruction) { |
| VideoAspectRatio aspect_ratio; |
| EXPECT_FALSE(aspect_ratio.IsValid()); |
| EXPECT_EQ(aspect_ratio.GetNaturalSize(kRect_16_9), gfx::Size(16, 9)); |
| } |
| |
| TEST(VideoAspectRatioTest, FromNaturalSize) { |
| VideoAspectRatio aspect_ratio; |
| |
| aspect_ratio = VideoAspectRatio(kRect_16_9, gfx::Size(16, 9)); |
| EXPECT_TRUE(aspect_ratio.IsValid()); |
| EXPECT_EQ(aspect_ratio.GetNaturalSize(kRect_16_9), gfx::Size(16, 9)); |
| |
| aspect_ratio = VideoAspectRatio(kRect_4_3, gfx::Size(16, 9)); |
| EXPECT_TRUE(aspect_ratio.IsValid()); |
| EXPECT_EQ(aspect_ratio.GetNaturalSize(kRect_4_3), gfx::Size(5, 3)); |
| |
| aspect_ratio = VideoAspectRatio(kRect_16_9, gfx::Size(4, 3)); |
| EXPECT_TRUE(aspect_ratio.IsValid()); |
| EXPECT_EQ(aspect_ratio.GetNaturalSize(kRect_16_9), gfx::Size(16, 12)); |
| } |
| |
| TEST(VideoAspectRatioTest, Pixel) { |
| VideoAspectRatio aspect_ratio; |
| |
| aspect_ratio = VideoAspectRatio::PAR(1, 1); |
| EXPECT_TRUE(aspect_ratio.IsValid()); |
| EXPECT_EQ(aspect_ratio.GetNaturalSize(kRect_16_9), gfx::Size(16, 9)); |
| |
| aspect_ratio = VideoAspectRatio::PAR(1, 2); |
| EXPECT_TRUE(aspect_ratio.IsValid()); |
| EXPECT_EQ(aspect_ratio.GetNaturalSize(kRect_16_9), gfx::Size(16, 18)); |
| |
| aspect_ratio = VideoAspectRatio::PAR(2, 1); |
| EXPECT_TRUE(aspect_ratio.IsValid()); |
| EXPECT_EQ(aspect_ratio.GetNaturalSize(kRect_16_9), gfx::Size(32, 9)); |
| } |
| |
| TEST(VideoAspectRatioTest, Display) { |
| VideoAspectRatio aspect_ratio; |
| |
| aspect_ratio = VideoAspectRatio::DAR(1, 1); |
| EXPECT_TRUE(aspect_ratio.IsValid()); |
| EXPECT_EQ(aspect_ratio.GetNaturalSize(kRect_16_9), gfx::Size(16, 16)); |
| |
| aspect_ratio = VideoAspectRatio::DAR(1, 2); |
| EXPECT_TRUE(aspect_ratio.IsValid()); |
| EXPECT_EQ(aspect_ratio.GetNaturalSize(kRect_16_9), gfx::Size(16, 32)); |
| |
| aspect_ratio = VideoAspectRatio::DAR(2, 1); |
| EXPECT_TRUE(aspect_ratio.IsValid()); |
| EXPECT_EQ(aspect_ratio.GetNaturalSize(kRect_16_9), gfx::Size(18, 9)); |
| } |
| |
| } // namespace media |