| // Copyright 2017 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/capture/video_capture_types.h" |
| |
| #include "testing/gtest/include/gtest/gtest.h" |
| #include "ui/gfx/geometry/size.h" |
| |
| namespace media { |
| |
| namespace { |
| |
| using SuggestedConstraints = VideoCaptureParams::SuggestedConstraints; |
| |
| void ExpectEqualConstraints(const SuggestedConstraints& a, |
| const SuggestedConstraints& b) { |
| EXPECT_EQ(a.min_frame_size, b.min_frame_size); |
| EXPECT_EQ(a.max_frame_size, b.max_frame_size); |
| EXPECT_EQ(a.fixed_aspect_ratio, b.fixed_aspect_ratio); |
| } |
| |
| } // namespace |
| |
| TEST(VideoCaptureTypesTest, SuggestsConstraints) { |
| VideoCaptureParams params; |
| |
| // For empty/invalid VideoCaptureParams, results will be empty sizes. |
| ExpectEqualConstraints( |
| SuggestedConstraints({gfx::Size(), gfx::Size(), false}), |
| params.SuggestConstraints()); |
| |
| // Set an impractically small frame size, and confirm the same suggestion as |
| // if the params were empty. |
| params.requested_format.frame_size = gfx::Size(1, 1); |
| ExpectEqualConstraints( |
| SuggestedConstraints({gfx::Size(), gfx::Size(), false}), |
| params.SuggestConstraints()); |
| |
| // Test: Fixed 1080p resolution. |
| params.requested_format.frame_size = gfx::Size(1920, 1080); |
| params.resolution_change_policy = ResolutionChangePolicy::FIXED_RESOLUTION; |
| ExpectEqualConstraints(SuggestedConstraints({gfx::Size(1920, 1080), |
| gfx::Size(1920, 1080), false}), |
| params.SuggestConstraints()); |
| |
| // Test: Max 1080p resolution, fixed aspect ratio. |
| params.requested_format.frame_size = gfx::Size(1920, 1080); |
| params.resolution_change_policy = ResolutionChangePolicy::FIXED_ASPECT_RATIO; |
| ExpectEqualConstraints( |
| SuggestedConstraints({gfx::Size(320, 180), gfx::Size(1920, 1080), true}), |
| params.SuggestConstraints()); |
| |
| // Test: Max 1080p resolution, any aspect ratio. |
| params.requested_format.frame_size = gfx::Size(1920, 1080); |
| params.resolution_change_policy = ResolutionChangePolicy::ANY_WITHIN_LIMIT; |
| ExpectEqualConstraints( |
| SuggestedConstraints({gfx::Size(2, 2), gfx::Size(1920, 1080), false}), |
| params.SuggestConstraints()); |
| |
| // Test: Odd-valued resolution, fixed aspect ratio. |
| params.requested_format.frame_size = gfx::Size(999, 777); |
| params.resolution_change_policy = ResolutionChangePolicy::FIXED_ASPECT_RATIO; |
| ExpectEqualConstraints( |
| SuggestedConstraints({gfx::Size(232, 180), gfx::Size(998, 776), true}), |
| params.SuggestConstraints()); |
| |
| // Test: Max resolution less the hard-coded 180-line minimum, fixed aspect. |
| params.requested_format.frame_size = gfx::Size(160, 90); |
| params.resolution_change_policy = ResolutionChangePolicy::FIXED_ASPECT_RATIO; |
| ExpectEqualConstraints( |
| SuggestedConstraints({gfx::Size(160, 90), gfx::Size(160, 90), true}), |
| params.SuggestConstraints()); |
| } |
| |
| } // namespace media |