| Index: content/renderer/media/media_stream_constraints_util_video_content_unittest.cc
|
| diff --git a/content/renderer/media/media_stream_constraints_util_video_content_unittest.cc b/content/renderer/media/media_stream_constraints_util_video_content_unittest.cc
|
| index 212391efec04811a3328df62ac93e983c305fb07..d36b7c5315045647f8e2b7608cec24b5b7106643 100644
|
| --- a/content/renderer/media/media_stream_constraints_util_video_content_unittest.cc
|
| +++ b/content/renderer/media/media_stream_constraints_util_video_content_unittest.cc
|
| @@ -7,8 +7,8 @@
|
| #include <cmath>
|
| #include <string>
|
|
|
| -#include "content/renderer/media/media_stream_video_source.h"
|
| #include "content/renderer/media/mock_constraint_factory.h"
|
| +#include "media/base/limits.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| #include "third_party/WebKit/public/platform/WebMediaConstraints.h"
|
|
|
| @@ -16,29 +16,50 @@ namespace content {
|
|
|
| namespace {
|
|
|
| -void CheckNonResolutionDefaults(
|
| - const VideoContentCaptureSourceSelectionResult& result) {
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultFrameRate, result.FrameRate());
|
| - EXPECT_EQ(rtc::Optional<bool>(), result.noise_reduction());
|
| +const double kDefaultScreenCastAspectRatio =
|
| + static_cast<double>(kDefaultScreenCastWidth) /
|
| + static_cast<double>(kDefaultScreenCastHeight);
|
| +
|
| +void CheckNonResolutionDefaults(const VideoCaptureSettings& result) {
|
| + EXPECT_EQ(kDefaultScreenCastFrameRate, result.FrameRate());
|
| + EXPECT_EQ(base::Optional<bool>(), result.noise_reduction());
|
| EXPECT_EQ(std::string(), result.device_id());
|
| }
|
|
|
| -void CheckNonFrameRateDefaults(
|
| - const VideoContentCaptureSourceSelectionResult& result) {
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultHeight, result.Height());
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultWidth, result.Width());
|
| - EXPECT_EQ(rtc::Optional<bool>(), result.noise_reduction());
|
| +void CheckNonFrameRateDefaults(const VideoCaptureSettings& result) {
|
| + EXPECT_EQ(kDefaultScreenCastHeight, result.Height());
|
| + EXPECT_EQ(kDefaultScreenCastWidth, result.Width());
|
| + EXPECT_EQ(base::Optional<bool>(), result.noise_reduction());
|
| EXPECT_EQ(std::string(), result.device_id());
|
| }
|
|
|
| +void CheckTrackAdapterSettingsEqualsFormat(const VideoCaptureSettings& result) {
|
| + // For content capture, resolution and frame rate should always be the same
|
| + // for source and track.
|
| + EXPECT_EQ(result.Width(), result.track_adapter_settings().max_width);
|
| + EXPECT_EQ(result.Height(), result.track_adapter_settings().max_height);
|
| + EXPECT_EQ(0.0, result.track_adapter_settings().max_frame_rate);
|
| +}
|
| +
|
| +void CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(
|
| + const VideoCaptureSettings& result) {
|
| + EXPECT_EQ(
|
| + static_cast<double>(kMinScreenCastDimension) / kMaxScreenCastDimension,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(
|
| + static_cast<double>(kMaxScreenCastDimension) / kMinScreenCastDimension,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| +}
|
| +
|
| } // namespace
|
|
|
| class MediaStreamConstraintsUtilVideoContentTest : public testing::Test {
|
| protected:
|
| - VideoContentCaptureSourceSelectionResult SelectSettings() {
|
| + VideoCaptureSettings SelectSettings() {
|
| blink::WebMediaConstraints constraints =
|
| constraint_factory_.CreateWebMediaConstraints();
|
| - return SelectVideoContentCaptureSourceSettings(constraints);
|
| + return SelectSettingsVideoContentCapture(constraints);
|
| }
|
|
|
| MockConstraintFactory constraint_factory_;
|
| @@ -51,9 +72,10 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, Unconstrained) {
|
|
|
| // All settings should have default values.
|
| EXPECT_TRUE(result.HasValue());
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultHeight, result.Height());
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultWidth, result.Width());
|
| + EXPECT_EQ(kDefaultScreenCastHeight, result.Height());
|
| + EXPECT_EQ(kDefaultScreenCastWidth, result.Width());
|
| CheckNonResolutionDefaults(result);
|
| + CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result);
|
| }
|
|
|
| // The "Overconstrained" tests verify that failure of any single required
|
| @@ -162,10 +184,11 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryDeviceID) {
|
| EXPECT_TRUE(result.HasValue());
|
| EXPECT_EQ(kDeviceID, result.device_id());
|
| // Other settings should have default values.
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultHeight, result.Height());
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultWidth, result.Width());
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultFrameRate, result.FrameRate());
|
| - EXPECT_EQ(rtc::Optional<bool>(), result.noise_reduction());
|
| + EXPECT_EQ(kDefaultScreenCastHeight, result.Height());
|
| + EXPECT_EQ(kDefaultScreenCastWidth, result.Width());
|
| + EXPECT_EQ(kDefaultScreenCastFrameRate, result.FrameRate());
|
| + EXPECT_EQ(base::Optional<bool>(), result.noise_reduction());
|
| + CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result);
|
| }
|
|
|
| TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealDeviceID) {
|
| @@ -185,10 +208,11 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealDeviceID) {
|
| EXPECT_TRUE(result.HasValue());
|
| EXPECT_EQ(kIdealID, result.device_id());
|
| // Other settings should have default values.
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultHeight, result.Height());
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultWidth, result.Width());
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultFrameRate, result.FrameRate());
|
| - EXPECT_EQ(rtc::Optional<bool>(), result.noise_reduction());
|
| + EXPECT_EQ(kDefaultScreenCastHeight, result.Height());
|
| + EXPECT_EQ(kDefaultScreenCastWidth, result.Width());
|
| + EXPECT_EQ(kDefaultScreenCastFrameRate, result.FrameRate());
|
| + EXPECT_EQ(base::Optional<bool>(), result.noise_reduction());
|
| + CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result);
|
| }
|
|
|
| TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryNoiseReduction) {
|
| @@ -200,10 +224,11 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryNoiseReduction) {
|
| EXPECT_TRUE(result.HasValue());
|
| EXPECT_EQ(noise_reduction, result.noise_reduction());
|
| // Other settings should have default values.
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultHeight, result.Height());
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultWidth, result.Width());
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultFrameRate, result.FrameRate());
|
| + EXPECT_EQ(kDefaultScreenCastHeight, result.Height());
|
| + EXPECT_EQ(kDefaultScreenCastWidth, result.Width());
|
| + EXPECT_EQ(kDefaultScreenCastFrameRate, result.FrameRate());
|
| EXPECT_EQ(std::string(), result.device_id());
|
| + CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result);
|
| }
|
| }
|
|
|
| @@ -216,10 +241,11 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealNoiseReduction) {
|
| EXPECT_TRUE(result.HasValue());
|
| EXPECT_EQ(noise_reduction, result.noise_reduction());
|
| // Other settings should have default values.
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultHeight, result.Height());
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultWidth, result.Width());
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultFrameRate, result.FrameRate());
|
| + EXPECT_EQ(kDefaultScreenCastHeight, result.Height());
|
| + EXPECT_EQ(kDefaultScreenCastWidth, result.Width());
|
| + EXPECT_EQ(kDefaultScreenCastFrameRate, result.FrameRate());
|
| EXPECT_EQ(std::string(), result.device_id());
|
| + CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result);
|
| }
|
| }
|
|
|
| @@ -231,9 +257,13 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryExactHeight) {
|
| EXPECT_TRUE(result.HasValue());
|
| EXPECT_EQ(kHeight, result.Height());
|
| // The algorithm tries to preserve the default aspect ratio.
|
| - EXPECT_EQ(std::round(kHeight * MediaStreamVideoSource::kDefaultAspectRatio),
|
| + EXPECT_EQ(std::round(kHeight * kDefaultScreenCastAspectRatio),
|
| result.Width());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(1.0 / kHeight, result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(static_cast<double>(kMaxScreenCastDimension) / kHeight,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryMinHeight) {
|
| @@ -244,18 +274,28 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryMinHeight) {
|
| EXPECT_TRUE(result.HasValue());
|
| // kHeight is greater that the default, so expect kHeight.
|
| EXPECT_EQ(kHeight, result.Height());
|
| - EXPECT_EQ(std::round(kHeight * MediaStreamVideoSource::kDefaultAspectRatio),
|
| + EXPECT_EQ(std::round(kHeight * kDefaultScreenCastAspectRatio),
|
| result.Width());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(1.0 / kMaxScreenCastDimension,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(static_cast<double>(kMaxScreenCastDimension) / kHeight,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
|
|
| const int kSmallHeight = 100;
|
| constraint_factory_.basic().height.setMin(kSmallHeight);
|
| result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| // kSmallHeight is less that the default, so expect the default.
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultHeight, result.Height());
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultWidth, result.Width());
|
| + EXPECT_EQ(kDefaultScreenCastHeight, result.Height());
|
| + EXPECT_EQ(kDefaultScreenCastWidth, result.Width());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(1.0 / kMaxScreenCastDimension,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(static_cast<double>(kMaxScreenCastDimension) / kSmallHeight,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryMaxHeight) {
|
| @@ -265,9 +305,13 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryMaxHeight) {
|
| auto result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| // kHeight is greater that the default, so expect the default.
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultHeight, result.Height());
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultWidth, result.Width());
|
| + EXPECT_EQ(kDefaultScreenCastHeight, result.Height());
|
| + EXPECT_EQ(kDefaultScreenCastWidth, result.Width());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(1.0 / kHeight, result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(kMaxScreenCastDimension,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
|
|
| const int kSmallHeight = 100;
|
| constraint_factory_.basic().height.setMax(kSmallHeight);
|
| @@ -275,10 +319,14 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryMaxHeight) {
|
| EXPECT_TRUE(result.HasValue());
|
| // kSmallHeight is less that the default, so expect kSmallHeight.
|
| EXPECT_EQ(kSmallHeight, result.Height());
|
| - EXPECT_EQ(
|
| - std::round(kSmallHeight * MediaStreamVideoSource::kDefaultAspectRatio),
|
| - result.Width());
|
| + EXPECT_EQ(std::round(kSmallHeight * kDefaultScreenCastAspectRatio),
|
| + result.Width());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(1.0 / kSmallHeight,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(kMaxScreenCastDimension,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryHeightRange) {
|
| @@ -291,9 +339,14 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryHeightRange) {
|
| auto result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| // The range includes the default, so expect the default.
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultHeight, result.Height());
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultWidth, result.Width());
|
| + EXPECT_EQ(kDefaultScreenCastHeight, result.Height());
|
| + EXPECT_EQ(kDefaultScreenCastWidth, result.Width());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(1.0 / kMaxHeight,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(static_cast<double>(kMaxScreenCastDimension) / kMinHeight,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| {
|
| @@ -305,10 +358,14 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryHeightRange) {
|
| EXPECT_TRUE(result.HasValue());
|
| // The whole range is greater than the default, so expect the range minimum.
|
| EXPECT_EQ(kMinHeight, result.Height());
|
| - EXPECT_EQ(
|
| - std::round(kMinHeight * MediaStreamVideoSource::kDefaultAspectRatio),
|
| - result.Width());
|
| + EXPECT_EQ(std::round(kMinHeight * kDefaultScreenCastAspectRatio),
|
| + result.Width());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(1.0 / kMaxHeight,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(static_cast<double>(kMaxScreenCastDimension) / kMinHeight,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| {
|
| @@ -320,10 +377,14 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryHeightRange) {
|
| EXPECT_TRUE(result.HasValue());
|
| // The whole range is less than the default, so expect the range maximum.
|
| EXPECT_EQ(kMaxHeight, result.Height());
|
| - EXPECT_EQ(
|
| - std::round(kMaxHeight * MediaStreamVideoSource::kDefaultAspectRatio),
|
| - result.Width());
|
| + EXPECT_EQ(std::round(kMaxHeight * kDefaultScreenCastAspectRatio),
|
| + result.Width());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(1.0 / kMaxHeight,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(static_cast<double>(kMaxScreenCastDimension) / kMinHeight,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
| }
|
|
|
| @@ -338,10 +399,10 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealHeight) {
|
| EXPECT_EQ(kIdealHeight, result.Height());
|
| // When ideal height is given, the algorithm returns a width that is closest
|
| // to height * kDefaultAspectRatio.
|
| - EXPECT_EQ(
|
| - std::round(kIdealHeight * MediaStreamVideoSource::kDefaultAspectRatio),
|
| - result.Width());
|
| + EXPECT_EQ(std::round(kIdealHeight * kDefaultScreenCastAspectRatio),
|
| + result.Width());
|
| CheckNonResolutionDefaults(result);
|
| + CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result);
|
| }
|
|
|
| // Ideal greater than maximum.
|
| @@ -356,10 +417,14 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealHeight) {
|
| // Ideal height is greater than the maximum, expect maximum.
|
| EXPECT_EQ(kMaxHeight, result.Height());
|
| // Expect closest to kMaxHeight * kDefaultAspectRatio.
|
| - EXPECT_EQ(
|
| - std::round(kMaxHeight * MediaStreamVideoSource::kDefaultAspectRatio),
|
| - result.Width());
|
| + EXPECT_EQ(std::round(kMaxHeight * kDefaultScreenCastAspectRatio),
|
| + result.Width());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(1.0 / kMaxHeight,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(kMaxScreenCastDimension,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| // Ideal less than minimum.
|
| @@ -374,10 +439,14 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealHeight) {
|
| // Ideal height is less than the minimum, expect minimum.
|
| EXPECT_EQ(kMinHeight, result.Height());
|
| // Expect closest to kMinHeight * kDefaultAspectRatio.
|
| - EXPECT_EQ(
|
| - std::round(kMinHeight * MediaStreamVideoSource::kDefaultAspectRatio),
|
| - result.Width());
|
| + EXPECT_EQ(std::round(kMinHeight * kDefaultScreenCastAspectRatio),
|
| + result.Width());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(1.0 / kMaxScreenCastDimension,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(static_cast<double>(kMaxScreenCastDimension) / kMinHeight,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| // Ideal intersects a box.
|
| @@ -397,6 +466,9 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealHeight) {
|
| // outside the box. Closest is max width.
|
| EXPECT_EQ(constraint_factory_.basic().width.max(), result.Width());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(100.0 / 1000.0, result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(500.0 / 500.0, result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
|
|
| constraint_factory_.basic().width.setMin(1200);
|
| constraint_factory_.basic().width.setMax(2000);
|
| @@ -407,6 +479,10 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealHeight) {
|
| // min width.
|
| EXPECT_EQ(constraint_factory_.basic().width.min(), result.Width());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(1200.0 / 1000.0,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(2000.0 / 500.0, result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
|
|
| constraint_factory_.basic().width.setMin(100);
|
| constraint_factory_.basic().width.setMax(500);
|
| @@ -417,6 +493,9 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealHeight) {
|
| // max width.
|
| EXPECT_EQ(constraint_factory_.basic().width.max(), result.Width());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(100.0 / 1000.0, result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(500.0 / 500.0, result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| // Ideal outside the box, closest to the side coinciding with max height.
|
| @@ -435,6 +514,10 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealHeight) {
|
| // outside the box. Closest it max width.
|
| EXPECT_EQ(constraint_factory_.basic().width.max(), result.Width());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(100.0 / kMaxHeight,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(500.0 / 500.0, result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
|
|
| constraint_factory_.basic().width.setMin(1500);
|
| constraint_factory_.basic().width.setMax(2000);
|
| @@ -445,16 +528,23 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealHeight) {
|
| // width.
|
| EXPECT_EQ(constraint_factory_.basic().width.min(), result.Width());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(1500.0 / kMaxHeight,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(2000.0 / 500.0, result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
|
|
| constraint_factory_.basic().width.setMin(100);
|
| result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| EXPECT_EQ(kMaxHeight, result.Height());
|
| // kMaxHeight * kDefaultAspectRatio is within the width limits.
|
| - EXPECT_EQ(
|
| - std::round(kMaxHeight * MediaStreamVideoSource::kDefaultAspectRatio),
|
| - result.Width());
|
| + EXPECT_EQ(std::round(kMaxHeight * kDefaultScreenCastAspectRatio),
|
| + result.Width());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(100.0 / kMaxHeight,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(2000.0 / 500.0, result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| // Ideal outside the constrained set, closest to a single point.
|
| @@ -472,6 +562,9 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealHeight) {
|
| EXPECT_EQ(constraint_factory_.basic().height.max(), result.Height());
|
| EXPECT_EQ(constraint_factory_.basic().width.max(), result.Width());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(1.0, result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(1000.0 / 500.0, result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
| }
|
|
|
| @@ -482,9 +575,14 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryExactWidth) {
|
| auto result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| EXPECT_EQ(kWidth, result.Width());
|
| - EXPECT_EQ(std::round(kWidth / MediaStreamVideoSource::kDefaultAspectRatio),
|
| + EXPECT_EQ(std::round(kWidth / kDefaultScreenCastAspectRatio),
|
| result.Height());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(static_cast<double>(kWidth) / kMaxScreenCastDimension,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(static_cast<double>(kWidth) / kMinScreenCastDimension,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryMinWidth) {
|
| @@ -495,18 +593,30 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryMinWidth) {
|
| EXPECT_TRUE(result.HasValue());
|
| // kWidth is greater that the default, so expect kWidth.
|
| EXPECT_EQ(kWidth, result.Width());
|
| - EXPECT_EQ(std::round(kWidth / MediaStreamVideoSource::kDefaultAspectRatio),
|
| + EXPECT_EQ(std::round(kWidth / kDefaultScreenCastAspectRatio),
|
| result.Height());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(static_cast<double>(kWidth) / kMaxScreenCastDimension,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(
|
| + static_cast<double>(kMaxScreenCastDimension) / kMinScreenCastDimension,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
|
|
| const int kSmallWidth = 100;
|
| constraint_factory_.basic().width.setMin(kSmallWidth);
|
| result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| // kSmallWidth is less that the default, so expect the default.
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultWidth, result.Width());
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultHeight, result.Height());
|
| + EXPECT_EQ(kDefaultScreenCastWidth, result.Width());
|
| + EXPECT_EQ(kDefaultScreenCastHeight, result.Height());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(static_cast<double>(kSmallWidth) / kMaxScreenCastDimension,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(
|
| + static_cast<double>(kMaxScreenCastDimension) / kMinScreenCastDimension,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryMaxWidth) {
|
| @@ -516,9 +626,14 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryMaxWidth) {
|
| auto result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| // kWidth is greater that the default, so expect the default.
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultWidth, result.Width());
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultHeight, result.Height());
|
| + EXPECT_EQ(kDefaultScreenCastWidth, result.Width());
|
| + EXPECT_EQ(kDefaultScreenCastHeight, result.Height());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(1.0 / kMaxScreenCastDimension,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(static_cast<double>(kWidth) / kMinScreenCastDimension,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
|
|
| const int kSmallWidth = 100;
|
| constraint_factory_.basic().width.setMax(kSmallWidth);
|
| @@ -526,10 +641,14 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryMaxWidth) {
|
| EXPECT_TRUE(result.HasValue());
|
| // kSmallWidth is less that the default, so expect kSmallWidth.
|
| EXPECT_EQ(kSmallWidth, result.Width());
|
| - EXPECT_EQ(
|
| - std::round(kSmallWidth / MediaStreamVideoSource::kDefaultAspectRatio),
|
| - result.Height());
|
| + EXPECT_EQ(std::round(kSmallWidth / kDefaultScreenCastAspectRatio),
|
| + result.Height());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(1.0 / kMaxScreenCastDimension,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(static_cast<double>(kSmallWidth) / kMinScreenCastDimension,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryWidthRange) {
|
| @@ -542,9 +661,14 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryWidthRange) {
|
| auto result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| // The range includes the default, so expect the default.
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultWidth, result.Width());
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultHeight, result.Height());
|
| + EXPECT_EQ(kDefaultScreenCastWidth, result.Width());
|
| + EXPECT_EQ(kDefaultScreenCastHeight, result.Height());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(static_cast<double>(kMinWidth) / kMaxScreenCastDimension,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(static_cast<double>(kMaxWidth) / kMinScreenCastDimension,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| {
|
| @@ -556,10 +680,14 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryWidthRange) {
|
| EXPECT_TRUE(result.HasValue());
|
| // The whole range is greater than the default, so expect the range minimum.
|
| EXPECT_EQ(kMinWidth, result.Width());
|
| - EXPECT_EQ(
|
| - std::round(kMinWidth / MediaStreamVideoSource::kDefaultAspectRatio),
|
| - result.Height());
|
| + EXPECT_EQ(std::round(kMinWidth / kDefaultScreenCastAspectRatio),
|
| + result.Height());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(static_cast<double>(kMinWidth) / kMaxScreenCastDimension,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(static_cast<double>(kMaxWidth) / kMinScreenCastDimension,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| {
|
| @@ -571,10 +699,14 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryWidthRange) {
|
| EXPECT_TRUE(result.HasValue());
|
| // The whole range is less than the default, so expect the range maximum.
|
| EXPECT_EQ(kMaxWidth, result.Width());
|
| - EXPECT_EQ(
|
| - std::round(kMaxWidth / MediaStreamVideoSource::kDefaultAspectRatio),
|
| - result.Height());
|
| + EXPECT_EQ(std::round(kMaxWidth / kDefaultScreenCastAspectRatio),
|
| + result.Height());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(static_cast<double>(kMinWidth) / kMaxScreenCastDimension,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(static_cast<double>(kMaxWidth) / kMinScreenCastDimension,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
| }
|
|
|
| @@ -589,10 +721,10 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealWidth) {
|
| EXPECT_EQ(kIdealWidth, result.Width());
|
| // When ideal width is given, the algorithm returns a height that is closest
|
| // to width / kDefaultAspectRatio.
|
| - EXPECT_EQ(
|
| - std::round(kIdealWidth / MediaStreamVideoSource::kDefaultAspectRatio),
|
| - result.Height());
|
| + EXPECT_EQ(std::round(kIdealWidth / kDefaultScreenCastAspectRatio),
|
| + result.Height());
|
| CheckNonResolutionDefaults(result);
|
| + CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result);
|
| }
|
|
|
| // Ideal greater than maximum.
|
| @@ -606,10 +738,14 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealWidth) {
|
| EXPECT_TRUE(result.HasValue());
|
| EXPECT_EQ(kMaxWidth, result.Width());
|
| // Expect closest to kMaxWidth / kDefaultAspectRatio.
|
| - EXPECT_EQ(
|
| - std::round(kMaxWidth / MediaStreamVideoSource::kDefaultAspectRatio),
|
| - result.Height());
|
| + EXPECT_EQ(std::round(kMaxWidth / kDefaultScreenCastAspectRatio),
|
| + result.Height());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(1.0 / kMaxScreenCastDimension,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(static_cast<double>(kMaxWidth) / kMinScreenCastDimension,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| // Ideal less than minimum.
|
| @@ -623,10 +759,15 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealWidth) {
|
| EXPECT_TRUE(result.HasValue());
|
| EXPECT_EQ(kMinWidth, result.Width());
|
| // Expect closest to kMinWidth / kDefaultAspectRatio.
|
| - EXPECT_EQ(
|
| - std::round(kMinWidth / MediaStreamVideoSource::kDefaultAspectRatio),
|
| - result.Height());
|
| + EXPECT_EQ(std::round(kMinWidth / kDefaultScreenCastAspectRatio),
|
| + result.Height());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(static_cast<double>(kMinWidth) / kMaxScreenCastDimension,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(
|
| + static_cast<double>(kMaxScreenCastDimension) / kMinScreenCastDimension,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| // Ideal intersects a box.
|
| @@ -646,6 +787,9 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealWidth) {
|
| // outside the box. Closest is max height.
|
| EXPECT_EQ(constraint_factory_.basic().height.max(), result.Height());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(500.0 / 500.0, result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(1000.0 / 100.0, result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
|
|
| constraint_factory_.basic().height.setMin(1200);
|
| constraint_factory_.basic().height.setMax(2000);
|
| @@ -656,6 +800,10 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealWidth) {
|
| // min height.
|
| EXPECT_EQ(constraint_factory_.basic().height.min(), result.Height());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(500.0 / 2000.0, result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(1000.0 / 1200.0,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
|
|
| constraint_factory_.basic().height.setMin(100);
|
| constraint_factory_.basic().height.setMax(500);
|
| @@ -666,6 +814,9 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealWidth) {
|
| // height.
|
| EXPECT_EQ(constraint_factory_.basic().height.max(), result.Height());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(500.0 / 500.0, result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(1000.0 / 100.0, result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| // Ideal outside the box, closest to the side coinciding with max width.
|
| @@ -684,6 +835,10 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealWidth) {
|
| // height.
|
| EXPECT_EQ(constraint_factory_.basic().height.max(), result.Height());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(500.0 / 500.0, result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(static_cast<double>(kMaxWidth) / 100.0,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
|
|
| constraint_factory_.basic().height.setMin(1500);
|
| constraint_factory_.basic().height.setMax(2000);
|
| @@ -694,16 +849,23 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealWidth) {
|
| // min height.
|
| EXPECT_EQ(constraint_factory_.basic().height.min(), result.Height());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(500.0 / 2000.0, result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(static_cast<double>(kMaxWidth) / 1500.0,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
|
|
| constraint_factory_.basic().height.setMin(100);
|
| result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| EXPECT_EQ(kMaxWidth, result.Width());
|
| // kMaxWidth / kDefaultAspectRatio is within the height limits.
|
| - EXPECT_EQ(
|
| - std::round(kMaxWidth / MediaStreamVideoSource::kDefaultAspectRatio),
|
| - result.Height());
|
| + EXPECT_EQ(std::round(kMaxWidth / kDefaultScreenCastAspectRatio),
|
| + result.Height());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(500.0 / 2000.0, result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(static_cast<double>(kMaxWidth) / 100.0,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| // Ideal outside the constrained set, closest to a single point.
|
| @@ -721,6 +883,9 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealWidth) {
|
| EXPECT_EQ(constraint_factory_.basic().width.max(), result.Width());
|
| EXPECT_EQ(constraint_factory_.basic().height.max(), result.Height());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(100.0 / 500.0, result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(1.0, result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
| }
|
|
|
| @@ -733,10 +898,13 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryExactAspectRatio) {
|
| // Given that the default aspect ratio cannot be preserved, the algorithm
|
| // tries to preserve, among the default height or width, the one that leads
|
| // to highest area. In this case, height is preserved.
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultHeight, result.Height());
|
| - EXPECT_EQ(std::round(MediaStreamVideoSource::kDefaultHeight * kAspectRatio),
|
| + EXPECT_EQ(kDefaultScreenCastHeight, result.Height());
|
| + EXPECT_EQ(std::round(kDefaultScreenCastHeight * kAspectRatio),
|
| result.Width());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(kAspectRatio, result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(kAspectRatio, result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryMinAspectRatio) {
|
| @@ -746,19 +914,30 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryMinAspectRatio) {
|
| auto result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| // kAspectRatio is greater that the default, so expect kAspectRatio.
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultHeight, result.Height());
|
| - EXPECT_EQ(std::round(MediaStreamVideoSource::kDefaultHeight * kAspectRatio),
|
| + EXPECT_EQ(kDefaultScreenCastHeight, result.Height());
|
| + EXPECT_EQ(std::round(kDefaultScreenCastHeight * kAspectRatio),
|
| result.Width());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(kAspectRatio, result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(static_cast<double>(kMaxScreenCastDimension) /
|
| + static_cast<double>(kMinScreenCastDimension),
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
|
|
| const double kSmallAspectRatio = 0.5;
|
| constraint_factory_.basic().aspectRatio.setMin(kSmallAspectRatio);
|
| result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| // kSmallAspectRatio is less that the default, so expect the default.
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultHeight, result.Height());
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultWidth, result.Width());
|
| + EXPECT_EQ(kDefaultScreenCastHeight, result.Height());
|
| + EXPECT_EQ(kDefaultScreenCastWidth, result.Width());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(kSmallAspectRatio,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(static_cast<double>(kMaxScreenCastDimension) /
|
| + static_cast<double>(kMinScreenCastDimension),
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryMaxAspectRatio) {
|
| @@ -768,9 +947,14 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryMaxAspectRatio) {
|
| auto result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| // kAspectRatio is greater that the default, so expect the default.
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultHeight, result.Height());
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultWidth, result.Width());
|
| + EXPECT_EQ(kDefaultScreenCastHeight, result.Height());
|
| + EXPECT_EQ(kDefaultScreenCastWidth, result.Width());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(static_cast<double>(kMinScreenCastDimension) /
|
| + static_cast<double>(kMaxScreenCastDimension),
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(kAspectRatio, result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
|
|
| const double kSmallAspectRatio = 0.5;
|
| constraint_factory_.basic().aspectRatio.setMax(kSmallAspectRatio);
|
| @@ -779,11 +963,16 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryMaxAspectRatio) {
|
| // kSmallAspectRatio is less that the default, so expect kSmallAspectRatio.
|
| // Prefer to preserve default width since that leads to larger area than
|
| // preserving default height.
|
| - EXPECT_EQ(
|
| - std::round(MediaStreamVideoSource::kDefaultWidth / kSmallAspectRatio),
|
| - result.Height());
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultWidth, result.Width());
|
| + EXPECT_EQ(std::round(kDefaultScreenCastWidth / kSmallAspectRatio),
|
| + result.Height());
|
| + EXPECT_EQ(kDefaultScreenCastWidth, result.Width());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(static_cast<double>(kMinScreenCastDimension) /
|
| + static_cast<double>(kMaxScreenCastDimension),
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(kSmallAspectRatio,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryRangeAspectRatio) {
|
| @@ -796,9 +985,14 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryRangeAspectRatio) {
|
| auto result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| // Range includes default, so expect the default.
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultHeight, result.Height());
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultWidth, result.Width());
|
| + EXPECT_EQ(kDefaultScreenCastHeight, result.Height());
|
| + EXPECT_EQ(kDefaultScreenCastWidth, result.Width());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(kMinAspectRatio,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(kMaxAspectRatio,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| {
|
| @@ -809,11 +1003,15 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryRangeAspectRatio) {
|
| auto result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| // The whole range is greater than the default. Expect the minimum.
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultHeight, result.Height());
|
| - EXPECT_EQ(
|
| - std::round(MediaStreamVideoSource::kDefaultHeight * kMinAspectRatio),
|
| - result.Width());
|
| + EXPECT_EQ(kDefaultScreenCastHeight, result.Height());
|
| + EXPECT_EQ(std::round(kDefaultScreenCastHeight * kMinAspectRatio),
|
| + result.Width());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(kMinAspectRatio,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(kMaxAspectRatio,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| {
|
| @@ -824,11 +1022,15 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryRangeAspectRatio) {
|
| auto result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| // The whole range is less than the default. Expect the maximum.
|
| - EXPECT_EQ(
|
| - std::round(MediaStreamVideoSource::kDefaultWidth / kMaxAspectRatio),
|
| - result.Height());
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultWidth, result.Width());
|
| + EXPECT_EQ(std::round(kDefaultScreenCastWidth / kMaxAspectRatio),
|
| + result.Height());
|
| + EXPECT_EQ(kDefaultScreenCastWidth, result.Width());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(kMinAspectRatio,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(kMaxAspectRatio,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
| }
|
|
|
| @@ -840,11 +1042,11 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealAspectRatio) {
|
| constraint_factory_.basic().aspectRatio.setIdeal(kIdealAspectRatio);
|
| auto result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultHeight, result.Height());
|
| - EXPECT_EQ(
|
| - std::round(MediaStreamVideoSource::kDefaultHeight * kIdealAspectRatio),
|
| - result.Width());
|
| + EXPECT_EQ(kDefaultScreenCastHeight, result.Height());
|
| + EXPECT_EQ(std::round(kDefaultScreenCastHeight * kIdealAspectRatio),
|
| + result.Width());
|
| CheckNonResolutionDefaults(result);
|
| + CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result);
|
| }
|
|
|
| // Ideal greater than maximum.
|
| @@ -857,11 +1059,16 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealAspectRatio) {
|
| auto result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| // Ideal height is greater than the maximum, expect maximum.
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultHeight, result.Height());
|
| - EXPECT_EQ(
|
| - std::round(MediaStreamVideoSource::kDefaultHeight * kMaxAspectRatio),
|
| - result.Width());
|
| + EXPECT_EQ(kDefaultScreenCastHeight, result.Height());
|
| + EXPECT_EQ(std::round(kDefaultScreenCastHeight * kMaxAspectRatio),
|
| + result.Width());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(
|
| + static_cast<double>(kMinScreenCastDimension) / kMaxScreenCastDimension,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(kMaxAspectRatio,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| // Ideal less than minimum.
|
| @@ -874,11 +1081,16 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealAspectRatio) {
|
| auto result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| // Ideal height is greater than the maximum, expect maximum.
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultHeight, result.Height());
|
| - EXPECT_EQ(
|
| - std::round(MediaStreamVideoSource::kDefaultHeight * kMinAspectRatio),
|
| - result.Width());
|
| + EXPECT_EQ(kDefaultScreenCastHeight, result.Height());
|
| + EXPECT_EQ(std::round(kDefaultScreenCastHeight * kMinAspectRatio),
|
| + result.Width());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(kMinAspectRatio,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(
|
| + static_cast<double>(kMaxScreenCastDimension) / kMinScreenCastDimension,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| // Ideal intersects a box.
|
| @@ -900,6 +1112,9 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealAspectRatio) {
|
| result.Height());
|
| EXPECT_EQ(constraint_factory_.basic().width.max(), result.Width());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(100.0 / 500.0, result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(500.0 / 100.0, result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
|
|
| constraint_factory_.basic().height.setMin(1000);
|
| constraint_factory_.basic().height.setMax(5000);
|
| @@ -915,6 +1130,11 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealAspectRatio) {
|
| kIdealAspectRatio),
|
| result.Width());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(1000.0 / 5000.0,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(5000.0 / 1000.0,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
|
|
| constraint_factory_.basic().height.setMin(250);
|
| constraint_factory_.basic().height.setMax(5000);
|
| @@ -925,10 +1145,12 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealAspectRatio) {
|
| // Ideal aspect-ratio and default width and height are included in the
|
| // bounding box. Preserving default height leads to larger area than
|
| // preserving default width.
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultHeight, result.Height());
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultHeight * kIdealAspectRatio,
|
| - result.Width());
|
| + EXPECT_EQ(kDefaultScreenCastHeight, result.Height());
|
| + EXPECT_EQ(kDefaultScreenCastHeight * kIdealAspectRatio, result.Width());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(250.0 / 5000.0, result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(5000.0 / 250.0, result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| // Ideal outside the constrained area, closest to min or max aspect ratio.
|
| @@ -951,6 +1173,11 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealAspectRatio) {
|
| result.Height());
|
| EXPECT_EQ(constraint_factory_.basic().width.max(), result.Width());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(kMinAspectRatio,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(kMaxAspectRatio,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
|
|
| constraint_factory_.basic().aspectRatio.setIdeal(0.3);
|
| result = SelectSettings();
|
| @@ -961,6 +1188,11 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealAspectRatio) {
|
| std::round(constraint_factory_.basic().height.max() * kMinAspectRatio),
|
| result.Width());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(kMinAspectRatio,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(kMaxAspectRatio,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
|
|
| // Use a box that is bigger and further from the origin to force closeness
|
| // to a different default dimension.
|
| @@ -977,6 +1209,11 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealAspectRatio) {
|
| std::round(constraint_factory_.basic().height.min() * kMaxAspectRatio),
|
| result.Width());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(kMinAspectRatio,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(kMaxAspectRatio,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
|
|
| constraint_factory_.basic().aspectRatio.setIdeal(0.3);
|
| result = SelectSettings();
|
| @@ -987,6 +1224,11 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealAspectRatio) {
|
| result.Height());
|
| EXPECT_EQ(constraint_factory_.basic().width.min(), result.Width());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(kMinAspectRatio,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(kMaxAspectRatio,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| // Ideal outside the constrained area, closest to a single point.
|
| @@ -1004,6 +1246,9 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealAspectRatio) {
|
| EXPECT_EQ(constraint_factory_.basic().height.min(), result.Height());
|
| EXPECT_EQ(constraint_factory_.basic().width.max(), result.Width());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(1.0, result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(500.0 / 100.0, result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
| }
|
|
|
| @@ -1015,6 +1260,7 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryExactFrameRate) {
|
| EXPECT_TRUE(result.HasValue());
|
| EXPECT_EQ(kFrameRate, result.FrameRate());
|
| CheckNonFrameRateDefaults(result);
|
| + CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result);
|
| }
|
|
|
| TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryMinFrameRate) {
|
| @@ -1026,14 +1272,16 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryMinFrameRate) {
|
| // kFrameRate is greater that the default, so expect kFrameRate.
|
| EXPECT_EQ(kFrameRate, result.FrameRate());
|
| CheckNonFrameRateDefaults(result);
|
| + CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result);
|
|
|
| const double kSmallFrameRate = 5.0;
|
| constraint_factory_.basic().frameRate.setMin(kSmallFrameRate);
|
| result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| // kFrameRate is greater that the default, so expect kFrameRate.
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultFrameRate, result.FrameRate());
|
| + EXPECT_EQ(kDefaultScreenCastFrameRate, result.FrameRate());
|
| CheckNonFrameRateDefaults(result);
|
| + CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result);
|
| }
|
|
|
| TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryMaxFrameRate) {
|
| @@ -1043,8 +1291,9 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryMaxFrameRate) {
|
| auto result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| // kFrameRate is greater that the default, so expect the default.
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultFrameRate, result.FrameRate());
|
| + EXPECT_EQ(kDefaultScreenCastFrameRate, result.FrameRate());
|
| CheckNonFrameRateDefaults(result);
|
| + CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result);
|
|
|
| const double kSmallFrameRate = 5.0;
|
| constraint_factory_.basic().frameRate.setMax(kSmallFrameRate);
|
| @@ -1053,6 +1302,7 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryMaxFrameRate) {
|
| // kFrameRate is less that the default, so expect kFrameRate.
|
| EXPECT_EQ(kSmallFrameRate, result.FrameRate());
|
| CheckNonFrameRateDefaults(result);
|
| + CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result);
|
| }
|
|
|
| TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryRangeFrameRate) {
|
| @@ -1065,8 +1315,9 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryRangeFrameRate) {
|
| auto result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| // The range includes the default, so expect the default.
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultFrameRate, result.FrameRate());
|
| + EXPECT_EQ(kDefaultScreenCastFrameRate, result.FrameRate());
|
| CheckNonFrameRateDefaults(result);
|
| + CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result);
|
| }
|
|
|
| {
|
| @@ -1077,8 +1328,9 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryRangeFrameRate) {
|
| auto result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| // The whole range is greater that the default, so expect the minimum.
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultFrameRate, result.FrameRate());
|
| + EXPECT_EQ(kDefaultScreenCastFrameRate, result.FrameRate());
|
| CheckNonFrameRateDefaults(result);
|
| + CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result);
|
| }
|
|
|
| {
|
| @@ -1091,6 +1343,7 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryRangeFrameRate) {
|
| // The whole range is less that the default, so expect the maximum.
|
| EXPECT_EQ(kMaxFrameRate, result.FrameRate());
|
| CheckNonFrameRateDefaults(result);
|
| + CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result);
|
| }
|
| }
|
|
|
| @@ -1104,6 +1357,7 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealFrameRate) {
|
| EXPECT_TRUE(result.HasValue());
|
| EXPECT_EQ(kIdealFrameRate, result.FrameRate());
|
| CheckNonFrameRateDefaults(result);
|
| + CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result);
|
| }
|
|
|
| // Ideal greater than maximum.
|
| @@ -1117,6 +1371,7 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealFrameRate) {
|
| EXPECT_TRUE(result.HasValue());
|
| EXPECT_EQ(kMaxFrameRate, result.FrameRate());
|
| CheckNonFrameRateDefaults(result);
|
| + CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result);
|
| }
|
|
|
| // Ideal less than minimum.
|
| @@ -1130,6 +1385,7 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealFrameRate) {
|
| EXPECT_TRUE(result.HasValue());
|
| EXPECT_EQ(kMinFrameRate, result.FrameRate());
|
| CheckNonFrameRateDefaults(result);
|
| + CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result);
|
| }
|
|
|
| // Ideal within range.
|
| @@ -1145,6 +1401,7 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealFrameRate) {
|
| EXPECT_TRUE(result.HasValue());
|
| EXPECT_EQ(kIdealFrameRate, result.FrameRate());
|
| CheckNonFrameRateDefaults(result);
|
| + CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result);
|
| }
|
| }
|
|
|
| @@ -1162,9 +1419,10 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest,
|
| // In this case, default settings must be selected.
|
| auto result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultHeight, result.Height());
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultWidth, result.Width());
|
| + EXPECT_EQ(kDefaultScreenCastHeight, result.Height());
|
| + EXPECT_EQ(kDefaultScreenCastWidth, result.Width());
|
| CheckNonResolutionDefaults(result);
|
| + CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result);
|
|
|
| blink::WebMediaTrackConstraintSet& advanced2 =
|
| constraint_factory_.AddAdvanced();
|
| @@ -1176,6 +1434,9 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest,
|
| EXPECT_EQ(400, result.Height());
|
| EXPECT_EQ(500, result.Width());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(5.0 / 4.0, result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(5.0 / 4.0, result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
|
|
| blink::WebMediaTrackConstraintSet& advanced3 =
|
| constraint_factory_.AddAdvanced();
|
| @@ -1186,8 +1447,11 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest,
|
| EXPECT_EQ(400, result.Height());
|
| EXPECT_EQ(500, result.Width());
|
| EXPECT_EQ(10.0, result.FrameRate());
|
| - EXPECT_EQ(rtc::Optional<bool>(), result.noise_reduction());
|
| + EXPECT_EQ(base::Optional<bool>(), result.noise_reduction());
|
| EXPECT_EQ(std::string(), result.device_id());
|
| + EXPECT_EQ(5.0 / 4.0, result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(5.0 / 4.0, result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
|
|
| blink::WebMediaTrackConstraintSet& advanced4 =
|
| constraint_factory_.AddAdvanced();
|
| @@ -1200,8 +1464,11 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest,
|
| EXPECT_EQ(400, result.Height());
|
| EXPECT_EQ(500, result.Width());
|
| EXPECT_EQ(10.0, result.FrameRate());
|
| - EXPECT_EQ(rtc::Optional<bool>(), result.noise_reduction());
|
| + EXPECT_EQ(base::Optional<bool>(), result.noise_reduction());
|
| EXPECT_EQ(std::string(), result.device_id());
|
| + EXPECT_EQ(5.0 / 4.0, result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(5.0 / 4.0, result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
|
|
| constraint_factory_.basic().width.setIdeal(100);
|
| constraint_factory_.basic().height.setIdeal(100);
|
| @@ -1214,8 +1481,11 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest,
|
| EXPECT_EQ(std::round(4.0 * 900.0 / 41.0), result.Height());
|
| EXPECT_EQ(std::round(5.0 * 900.0 / 41.0), result.Width());
|
| EXPECT_EQ(10.0, result.FrameRate());
|
| - EXPECT_EQ(rtc::Optional<bool>(), result.noise_reduction());
|
| + EXPECT_EQ(base::Optional<bool>(), result.noise_reduction());
|
| EXPECT_EQ(std::string(), result.device_id());
|
| + EXPECT_EQ(5.0 / 4.0, result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(5.0 / 4.0, result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
|
|
| constraint_factory_.basic().width.setIdeal(2000);
|
| constraint_factory_.basic().height.setIdeal(1500);
|
| @@ -1227,8 +1497,11 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest,
|
| EXPECT_EQ(400, result.Height());
|
| EXPECT_EQ(500, result.Width());
|
| EXPECT_EQ(10.0, result.FrameRate());
|
| - EXPECT_EQ(rtc::Optional<bool>(), result.noise_reduction());
|
| + EXPECT_EQ(base::Optional<bool>(), result.noise_reduction());
|
| EXPECT_EQ(std::string(), result.device_id());
|
| + EXPECT_EQ(5.0 / 4.0, result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(5.0 / 4.0, result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| TEST_F(MediaStreamConstraintsUtilVideoContentTest, AdvancedExactResolution) {
|
| @@ -1246,9 +1519,10 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, AdvancedExactResolution) {
|
| // None of the constraint sets can be satisfied. Default resolution should
|
| // be selected.
|
| EXPECT_TRUE(result.HasValue());
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultHeight, result.Height());
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultWidth, result.Width());
|
| + EXPECT_EQ(kDefaultScreenCastHeight, result.Height());
|
| + EXPECT_EQ(kDefaultScreenCastWidth, result.Width());
|
| CheckNonResolutionDefaults(result);
|
| + CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result);
|
|
|
| blink::WebMediaTrackConstraintSet& advanced3 =
|
| constraint_factory_.AddAdvanced();
|
| @@ -1259,6 +1533,11 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, AdvancedExactResolution) {
|
| EXPECT_EQ(1920, result.Width());
|
| EXPECT_EQ(1080, result.Height());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(1920.0 / 1080.0,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(1920.0 / 1080.0,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
|
|
| blink::WebMediaTrackConstraintSet& advanced4 =
|
| constraint_factory_.AddAdvanced();
|
| @@ -1271,6 +1550,11 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, AdvancedExactResolution) {
|
| EXPECT_EQ(1920, result.Width());
|
| EXPECT_EQ(1080, result.Height());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(1920.0 / 1080.0,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(1920.0 / 1080.0,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
|
|
| constraint_factory_.basic().width.setIdeal(800);
|
| constraint_factory_.basic().height.setIdeal(600);
|
| @@ -1280,6 +1564,11 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, AdvancedExactResolution) {
|
| EXPECT_EQ(1920, result.Width());
|
| EXPECT_EQ(1080, result.Height());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(1920.0 / 1080.0,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(1920.0 / 1080.0,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
| }
|
|
|
| @@ -1298,6 +1587,9 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest,
|
| EXPECT_EQ(1920, result.Width());
|
| EXPECT_EQ(1080, result.Height());
|
| EXPECT_EQ(60.0, result.FrameRate());
|
| + EXPECT_EQ(1920.0 / 1080.0, result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(1920.0 / 1080.0, result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| TEST_F(MediaStreamConstraintsUtilVideoContentTest, AdvancedNoiseReduction) {
|
| @@ -1315,10 +1607,15 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, AdvancedNoiseReduction) {
|
| EXPECT_TRUE(result.HasValue());
|
| EXPECT_EQ(1920, result.Width());
|
| // Preserves default aspect ratio.
|
| - EXPECT_EQ(static_cast<int>(std::round(
|
| - result.Width() / MediaStreamVideoSource::kDefaultAspectRatio)),
|
| + EXPECT_EQ(static_cast<int>(
|
| + std::round(result.Width() / kDefaultScreenCastAspectRatio)),
|
| result.Height());
|
| EXPECT_TRUE(result.noise_reduction() && !*result.noise_reduction());
|
| + EXPECT_EQ(1920.0 / static_cast<double>(kMaxScreenCastDimension),
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(static_cast<double>(kMaxScreenCastDimension) / 1080.0,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| // The "AdvancedContradictory" tests check that advanced constraint sets that
|
| @@ -1341,6 +1638,9 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest,
|
| EXPECT_EQ(640, result.Width());
|
| EXPECT_EQ(480, result.Height());
|
| EXPECT_TRUE(result.noise_reduction() && *result.noise_reduction());
|
| + EXPECT_EQ(640.0 / 480.0, result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(640.0 / 480.0, result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| TEST_F(MediaStreamConstraintsUtilVideoContentTest,
|
| @@ -1358,8 +1658,10 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest,
|
| EXPECT_TRUE(result.HasValue());
|
| EXPECT_EQ(640, result.Width());
|
| EXPECT_EQ(480, result.Height());
|
| - // Resolution cannot be adjusted due to exact in the first advanced set.
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(640.0 / 480.0, result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(640.0 / 480.0, result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| TEST_F(MediaStreamConstraintsUtilVideoContentTest,
|
| @@ -1379,7 +1681,12 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest,
|
| EXPECT_EQ(640, result.Width());
|
| EXPECT_EQ(480, result.Height());
|
| // Resolution cannot exceed the requested resolution.
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultFrameRate, result.FrameRate());
|
| + EXPECT_EQ(kDefaultScreenCastFrameRate, result.FrameRate());
|
| + EXPECT_EQ(kMinScreenCastDimension / 480.0,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(640.0 / kMinScreenCastDimension,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| TEST_F(MediaStreamConstraintsUtilVideoContentTest,
|
| @@ -1398,7 +1705,12 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest,
|
| EXPECT_TRUE(result.HasValue());
|
| EXPECT_EQ(800, result.Width());
|
| EXPECT_EQ(600, result.Height());
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultFrameRate, result.FrameRate());
|
| + EXPECT_EQ(kDefaultScreenCastFrameRate, result.FrameRate());
|
| + EXPECT_EQ(800.0 / kMaxScreenCastDimension,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(kMaxScreenCastDimension / 600.0,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| TEST_F(MediaStreamConstraintsUtilVideoContentTest,
|
| @@ -1412,10 +1724,12 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest,
|
| advanced2.aspectRatio.setExact(3.0);
|
| auto result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| - EXPECT_EQ(std::round(MediaStreamVideoSource::kDefaultHeight * 10.0),
|
| - result.Width());
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultHeight, result.Height());
|
| + EXPECT_EQ(std::round(kDefaultScreenCastHeight * 10.0), result.Width());
|
| + EXPECT_EQ(kDefaultScreenCastHeight, result.Height());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(10.0, result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(10.0, result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| TEST_F(MediaStreamConstraintsUtilVideoContentTest,
|
| @@ -1429,10 +1743,14 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest,
|
| advanced2.aspectRatio.setMax(3.0);
|
| auto result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| - EXPECT_EQ(std::round(MediaStreamVideoSource::kDefaultHeight * 10.0),
|
| - result.Width());
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultHeight, result.Height());
|
| + EXPECT_EQ(std::round(kDefaultScreenCastHeight * 10.0), result.Width());
|
| + EXPECT_EQ(kDefaultScreenCastHeight, result.Height());
|
| CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(10.0, result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(
|
| + kMaxScreenCastDimension / static_cast<double>(kMinScreenCastDimension),
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| TEST_F(MediaStreamConstraintsUtilVideoContentTest,
|
| @@ -1448,6 +1766,7 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest,
|
| EXPECT_TRUE(result.HasValue());
|
| EXPECT_EQ(40.0, result.FrameRate());
|
| CheckNonFrameRateDefaults(result);
|
| + CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result);
|
| }
|
|
|
| TEST_F(MediaStreamConstraintsUtilVideoContentTest,
|
| @@ -1463,6 +1782,7 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest,
|
| EXPECT_TRUE(result.HasValue());
|
| EXPECT_LE(40.0, result.FrameRate());
|
| CheckNonFrameRateDefaults(result);
|
| + CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result);
|
| }
|
|
|
| TEST_F(MediaStreamConstraintsUtilVideoContentTest,
|
| @@ -1480,9 +1800,15 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest,
|
| advanced3.frameRate.setExact(90.0);
|
| auto result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultWidth, result.Width());
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultHeight, result.Height());
|
| + EXPECT_EQ(kDefaultScreenCastWidth, result.Width());
|
| + EXPECT_EQ(kDefaultScreenCastHeight, result.Height());
|
| EXPECT_EQ(90.0, result.FrameRate());
|
| + EXPECT_EQ(
|
| + static_cast<double>(kMinScreenCastDimension) / kMaxScreenCastDimension,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(1920.0 / kMinScreenCastDimension,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| TEST_F(MediaStreamConstraintsUtilVideoContentTest,
|
| @@ -1500,9 +1826,15 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest,
|
| advanced3.frameRate.setExact(60.0);
|
| auto result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultWidth, result.Width());
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultHeight, result.Height());
|
| + EXPECT_EQ(kDefaultScreenCastWidth, result.Width());
|
| + EXPECT_EQ(kDefaultScreenCastHeight, result.Height());
|
| EXPECT_EQ(60.0, result.FrameRate());
|
| + EXPECT_EQ(static_cast<double>(kMinScreenCastDimension) / 1080.0,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(
|
| + static_cast<double>(kMaxScreenCastDimension) / kMinScreenCastDimension,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| TEST_F(MediaStreamConstraintsUtilVideoContentTest, AdvancedDeviceID) {
|
| @@ -1528,6 +1860,7 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, AdvancedDeviceID) {
|
| // kDeviceID2 must be selected because it is the only one that satisfies both
|
| // advanced sets.
|
| EXPECT_EQ(kDeviceID2, result.device_id());
|
| + CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result);
|
| }
|
|
|
| TEST_F(MediaStreamConstraintsUtilVideoContentTest,
|
| @@ -1554,6 +1887,7 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest,
|
| // The second advanced set must be ignored because it contradicts the first
|
| // set.
|
| EXPECT_EQ(std::string(kDeviceID1), result.device_id());
|
| + CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result);
|
| }
|
|
|
| TEST_F(MediaStreamConstraintsUtilVideoContentTest, AdvancedIdealDeviceID) {
|
| @@ -1577,17 +1911,19 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, AdvancedIdealDeviceID) {
|
| // Should select kDeviceID2, which appears in ideal and satisfies the advanced
|
| // set.
|
| EXPECT_EQ(std::string(kDeviceID2), result.device_id());
|
| + CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result);
|
| }
|
|
|
| TEST_F(MediaStreamConstraintsUtilVideoContentTest, ResolutionChangePolicy) {
|
| {
|
| constraint_factory_.Reset();
|
| auto result = SelectSettings();
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultWidth, result.Width());
|
| - EXPECT_EQ(MediaStreamVideoSource::kDefaultHeight, result.Height());
|
| + EXPECT_EQ(kDefaultScreenCastWidth, result.Width());
|
| + EXPECT_EQ(kDefaultScreenCastHeight, result.Height());
|
| // Resolution can be adjusted.
|
| EXPECT_EQ(media::RESOLUTION_POLICY_ANY_WITHIN_LIMIT,
|
| result.ResolutionChangePolicy());
|
| + CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result);
|
| }
|
| {
|
| constraint_factory_.Reset();
|
| @@ -1600,6 +1936,7 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, ResolutionChangePolicy) {
|
| // resolution.
|
| EXPECT_EQ(media::RESOLUTION_POLICY_ANY_WITHIN_LIMIT,
|
| result.ResolutionChangePolicy());
|
| + CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result);
|
| }
|
| {
|
| constraint_factory_.Reset();
|
| @@ -1610,6 +1947,9 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, ResolutionChangePolicy) {
|
| EXPECT_EQ(480, result.Height());
|
| EXPECT_EQ(media::RESOLUTION_POLICY_FIXED_RESOLUTION,
|
| result.ResolutionChangePolicy());
|
| + EXPECT_EQ(640.0 / 480.0, result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(640.0 / 480.0, result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
| {
|
| constraint_factory_.Reset();
|
| @@ -1620,6 +1960,9 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, ResolutionChangePolicy) {
|
| EXPECT_EQ(500, result.Height());
|
| EXPECT_EQ(media::RESOLUTION_POLICY_FIXED_RESOLUTION,
|
| result.ResolutionChangePolicy());
|
| + EXPECT_EQ(1000.0 / 500.0, result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(1000.0 / 500.0, result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
| {
|
| constraint_factory_.Reset();
|
| @@ -1630,6 +1973,9 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, ResolutionChangePolicy) {
|
| EXPECT_EQ(470, result.Height());
|
| EXPECT_EQ(media::RESOLUTION_POLICY_FIXED_RESOLUTION,
|
| result.ResolutionChangePolicy());
|
| + EXPECT_EQ(630.0 / 470.0, result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(630.0 / 470.0, result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
| {
|
| constraint_factory_.Reset();
|
| @@ -1644,6 +1990,10 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, ResolutionChangePolicy) {
|
| // Min/Max ranges prevent the resolution from being adjusted.
|
| EXPECT_EQ(media::RESOLUTION_POLICY_FIXED_RESOLUTION,
|
| result.ResolutionChangePolicy());
|
| + EXPECT_EQ(629.0 / kMaxScreenCastDimension,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(631.0 / 469.0, result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
| {
|
| constraint_factory_.Reset();
|
| @@ -1655,6 +2005,9 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, ResolutionChangePolicy) {
|
| // Exact aspect ratio prevents the resolution from being adjusted.
|
| EXPECT_EQ(media::RESOLUTION_POLICY_FIXED_RESOLUTION,
|
| result.ResolutionChangePolicy());
|
| + EXPECT_EQ(1.32, result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(1.32, result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
| }
|
|
|
|
|