| 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 79d69b126379d064b168c4525d8f6b96a2069c67..4d9fb32bfac3e1024f9615827a23bab2268babf2 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
|
| @@ -16,10 +16,6 @@ namespace content {
|
|
|
| namespace {
|
|
|
| -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());
|
| @@ -268,7 +264,7 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryExactHeight) {
|
|
|
| TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryMinHeight) {
|
| constraint_factory_.Reset();
|
| - const int kHeight = 1000;
|
| + const int kHeight = 2000;
|
| constraint_factory_.basic().height.setMin(kHeight);
|
| auto result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| @@ -299,48 +295,74 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryMinHeight) {
|
| }
|
|
|
| TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryMaxHeight) {
|
| - constraint_factory_.Reset();
|
| - const int kHeight = 1000;
|
| - constraint_factory_.basic().height.setMax(kHeight);
|
| - auto result = SelectSettings();
|
| - EXPECT_TRUE(result.HasValue());
|
| - // kHeight is greater that the default, so expect the default.
|
| - 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);
|
| + // kMaxHeight smaller than the default.
|
| + {
|
| + constraint_factory_.Reset();
|
| + const int kMaxHeight = kDefaultScreenCastHeight - 100;
|
| + constraint_factory_.basic().height.setMax(kMaxHeight);
|
| + auto result = SelectSettings();
|
| + EXPECT_TRUE(result.HasValue());
|
| + EXPECT_EQ(kMaxHeight, result.Height());
|
| + 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);
|
| + }
|
|
|
| - const int kSmallHeight = 100;
|
| - constraint_factory_.basic().height.setMax(kSmallHeight);
|
| - result = SelectSettings();
|
| - EXPECT_TRUE(result.HasValue());
|
| - // kSmallHeight is less that the default, so expect kSmallHeight.
|
| - EXPECT_EQ(kSmallHeight, result.Height());
|
| - 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);
|
| + // kMaxHeight greater than the default.
|
| + {
|
| + constraint_factory_.Reset();
|
| + const int kMaxHeight = kDefaultScreenCastHeight + 100;
|
| + constraint_factory_.basic().height.setMax(kMaxHeight);
|
| + auto result = SelectSettings();
|
| + EXPECT_TRUE(result.HasValue());
|
| + EXPECT_EQ(kMaxHeight, result.Height());
|
| + 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);
|
| + }
|
| +
|
| + // kMaxHeight greater than the maximum allowed.
|
| + {
|
| + constraint_factory_.Reset();
|
| + constraint_factory_.basic().height.setMax(kMaxScreenCastDimension + 100);
|
| + auto result = SelectSettings();
|
| + EXPECT_TRUE(result.HasValue());
|
| + EXPECT_EQ(kDefaultScreenCastHeight, result.Height());
|
| + EXPECT_EQ(
|
| + std::round(kDefaultScreenCastHeight * kDefaultScreenCastAspectRatio),
|
| + result.Width());
|
| + CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(1.0 / kMaxScreenCastDimension,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(kMaxScreenCastDimension,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| + CheckTrackAdapterSettingsEqualsFormat(result);
|
| + }
|
| }
|
|
|
| TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryHeightRange) {
|
| - constraint_factory_.Reset();
|
| + // Range includes the default.
|
| {
|
| - const int kMinHeight = 300;
|
| - const int kMaxHeight = 1000;
|
| + constraint_factory_.Reset();
|
| + const int kMinHeight = kDefaultScreenCastHeight - 100;
|
| + const int kMaxHeight = kDefaultScreenCastHeight + 100;
|
| constraint_factory_.basic().height.setMin(kMinHeight);
|
| constraint_factory_.basic().height.setMax(kMaxHeight);
|
| auto result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| - // The range includes the default, so expect the default.
|
| - EXPECT_EQ(kDefaultScreenCastHeight, result.Height());
|
| - EXPECT_EQ(kDefaultScreenCastWidth, result.Width());
|
| + EXPECT_EQ(kMaxHeight, result.Height());
|
| + EXPECT_EQ(std::round(kMaxHeight * kDefaultScreenCastAspectRatio),
|
| + result.Width());
|
| CheckNonResolutionDefaults(result);
|
| EXPECT_EQ(1.0 / kMaxHeight,
|
| result.track_adapter_settings().min_aspect_ratio);
|
| @@ -349,16 +371,17 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryHeightRange) {
|
| CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| + // The whole range is greater than the default.
|
| {
|
| - const int kMinHeight = 900;
|
| - const int kMaxHeight = 1000;
|
| + constraint_factory_.Reset();
|
| + const int kMinHeight = kDefaultScreenCastHeight + 100;
|
| + const int kMaxHeight = kDefaultScreenCastHeight + 200;
|
| constraint_factory_.basic().height.setMin(kMinHeight);
|
| constraint_factory_.basic().height.setMax(kMaxHeight);
|
| auto result = SelectSettings();
|
| 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 * kDefaultScreenCastAspectRatio),
|
| + EXPECT_EQ(kMaxHeight, result.Height());
|
| + EXPECT_EQ(std::round(kMaxHeight * kDefaultScreenCastAspectRatio),
|
| result.Width());
|
| CheckNonResolutionDefaults(result);
|
| EXPECT_EQ(1.0 / kMaxHeight,
|
| @@ -368,14 +391,15 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryHeightRange) {
|
| CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| + // The whole range is less than the default.
|
| {
|
| - const int kMinHeight = 300;
|
| - const int kMaxHeight = 400;
|
| + constraint_factory_.Reset();
|
| + const int kMinHeight = kDefaultScreenCastHeight - 200;
|
| + const int kMaxHeight = kDefaultScreenCastHeight - 100;
|
| constraint_factory_.basic().height.setMin(kMinHeight);
|
| constraint_factory_.basic().height.setMax(kMaxHeight);
|
| auto result = SelectSettings();
|
| 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 * kDefaultScreenCastAspectRatio),
|
| result.Width());
|
| @@ -398,7 +422,7 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealHeight) {
|
| EXPECT_TRUE(result.HasValue());
|
| EXPECT_EQ(kIdealHeight, result.Height());
|
| // When ideal height is given, the algorithm returns a width that is closest
|
| - // to height * kDefaultAspectRatio.
|
| + // to height * kDefaultScreenCastAspectRatio.
|
| EXPECT_EQ(std::round(kIdealHeight * kDefaultScreenCastAspectRatio),
|
| result.Width());
|
| CheckNonResolutionDefaults(result);
|
| @@ -416,7 +440,7 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealHeight) {
|
| EXPECT_TRUE(result.HasValue());
|
| // Ideal height is greater than the maximum, expect maximum.
|
| EXPECT_EQ(kMaxHeight, result.Height());
|
| - // Expect closest to kMaxHeight * kDefaultAspectRatio.
|
| + // Expect closest to kMaxHeight * kDefaultScreenCastAspectRatio.
|
| EXPECT_EQ(std::round(kMaxHeight * kDefaultScreenCastAspectRatio),
|
| result.Width());
|
| CheckNonResolutionDefaults(result);
|
| @@ -438,7 +462,7 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealHeight) {
|
| EXPECT_TRUE(result.HasValue());
|
| // Ideal height is less than the minimum, expect minimum.
|
| EXPECT_EQ(kMinHeight, result.Height());
|
| - // Expect closest to kMinHeight * kDefaultAspectRatio.
|
| + // Expect closest to kMinHeight * kDefaultScreenCastAspectRatio.
|
| EXPECT_EQ(std::round(kMinHeight * kDefaultScreenCastAspectRatio),
|
| result.Width());
|
| CheckNonResolutionDefaults(result);
|
| @@ -462,36 +486,11 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealHeight) {
|
| EXPECT_TRUE(result.HasValue());
|
| // Ideal height is included in the bounding box.
|
| EXPECT_EQ(kIdealHeight, result.Height());
|
| - // Expect width closest to kIdealHeight * kDefaultAspectRatio, which is
|
| - // 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);
|
| - result = SelectSettings();
|
| - EXPECT_TRUE(result.HasValue());
|
| - EXPECT_EQ(kIdealHeight, result.Height());
|
| - // kIdealHeight * kDefaultAspectRatio is outside the box. Closest is
|
| - // 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);
|
| - result = SelectSettings();
|
| - EXPECT_TRUE(result.HasValue());
|
| - EXPECT_EQ(kIdealHeight, result.Height());
|
| - // kIdealHeight * kDefaultAspectRatio is outside the box. Closest is
|
| - // max width.
|
| - EXPECT_EQ(constraint_factory_.basic().width.max(), result.Width());
|
| + double default_aspect_ratio =
|
| + static_cast<double>(constraint_factory_.basic().width.max()) /
|
| + constraint_factory_.basic().height.max();
|
| + // Expect width closest to kIdealHeight * default aspect ratio.
|
| + EXPECT_EQ(std::round(kIdealHeight * default_aspect_ratio), 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);
|
| @@ -510,7 +509,7 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealHeight) {
|
| auto result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| EXPECT_EQ(kMaxHeight, result.Height());
|
| - // Expect width closest to kMaxHeight * kDefaultAspectRatio, which is
|
| + // Expect width closest to kMaxHeight * default aspect ratio, which is
|
| // outside the box. Closest it max width.
|
| EXPECT_EQ(constraint_factory_.basic().width.max(), result.Width());
|
| CheckNonResolutionDefaults(result);
|
| @@ -518,33 +517,6 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealHeight) {
|
| 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);
|
| - result = SelectSettings();
|
| - EXPECT_TRUE(result.HasValue());
|
| - EXPECT_EQ(kMaxHeight, result.Height());
|
| - // kMaxHeight * kDefaultAspectRatio is outside the box. Closest is min
|
| - // 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 * 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.
|
| @@ -587,7 +559,7 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryExactWidth) {
|
|
|
| TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryMinWidth) {
|
| constraint_factory_.Reset();
|
| - const int kWidth = 1000;
|
| + const int kWidth = 3000;
|
| constraint_factory_.basic().width.setMin(kWidth);
|
| auto result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| @@ -620,49 +592,78 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryMinWidth) {
|
| }
|
|
|
| TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryMaxWidth) {
|
| - constraint_factory_.Reset();
|
| - const int kWidth = 1000;
|
| - constraint_factory_.basic().width.setMax(kWidth);
|
| - auto result = SelectSettings();
|
| - EXPECT_TRUE(result.HasValue());
|
| - // kWidth is greater that the default, so expect the default.
|
| - 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);
|
| + // kMaxWidth less than the default.
|
| + {
|
| + constraint_factory_.Reset();
|
| + const int kMaxWidth = kDefaultScreenCastWidth - 100;
|
| + constraint_factory_.basic().width.setMax(kMaxWidth);
|
| + auto result = SelectSettings();
|
| + EXPECT_TRUE(result.HasValue());
|
| + // kSmallWidth is less that the default, so expect kSmallWidth.
|
| + EXPECT_EQ(kMaxWidth, result.Width());
|
| + 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);
|
| + }
|
|
|
| - const int kSmallWidth = 100;
|
| - constraint_factory_.basic().width.setMax(kSmallWidth);
|
| - result = SelectSettings();
|
| - EXPECT_TRUE(result.HasValue());
|
| - // kSmallWidth is less that the default, so expect kSmallWidth.
|
| - EXPECT_EQ(kSmallWidth, result.Width());
|
| - 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);
|
| + // kMaxWidth greater than the default.
|
| + {
|
| + constraint_factory_.Reset();
|
| + const int kMaxWidth = kDefaultScreenCastWidth + 100;
|
| + constraint_factory_.basic().width.setMax(kMaxWidth);
|
| + auto result = SelectSettings();
|
| + EXPECT_TRUE(result.HasValue());
|
| + // kSmallWidth is less that the default, so expect kSmallWidth.
|
| + EXPECT_EQ(kMaxWidth, result.Width());
|
| + 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);
|
| + }
|
| +
|
| + // kMaxWidth greater than the maximum allowed (gets ignored).
|
| + {
|
| + constraint_factory_.Reset();
|
| + constraint_factory_.basic().width.setMax(kMaxScreenCastDimension + 100);
|
| + auto result = SelectSettings();
|
| + EXPECT_TRUE(result.HasValue());
|
| + // kSmallWidth is less that the default, so expect kSmallWidth.
|
| + EXPECT_EQ(kDefaultScreenCastWidth, result.Width());
|
| + EXPECT_EQ(
|
| + std::round(kDefaultScreenCastWidth / kDefaultScreenCastAspectRatio),
|
| + result.Height());
|
| + CheckNonResolutionDefaults(result);
|
| + EXPECT_EQ(1.0 / 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, MandatoryWidthRange) {
|
| - constraint_factory_.Reset();
|
| + // The whole range is less than the default.
|
| {
|
| - const int kMinWidth = 300;
|
| - const int kMaxWidth = 1000;
|
| + constraint_factory_.Reset();
|
| + const int kMinWidth = kDefaultScreenCastWidth - 200;
|
| + const int kMaxWidth = kDefaultScreenCastWidth - 100;
|
| constraint_factory_.basic().width.setMin(kMinWidth);
|
| constraint_factory_.basic().width.setMax(kMaxWidth);
|
| auto result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| - // The range includes the default, so expect the default.
|
| - EXPECT_EQ(kDefaultScreenCastWidth, result.Width());
|
| - EXPECT_EQ(kDefaultScreenCastHeight, result.Height());
|
| + EXPECT_EQ(kMaxWidth, result.Width());
|
| + EXPECT_EQ(std::round(kMaxWidth / kDefaultScreenCastAspectRatio),
|
| + result.Height());
|
| CheckNonResolutionDefaults(result);
|
| EXPECT_EQ(static_cast<double>(kMinWidth) / kMaxScreenCastDimension,
|
| result.track_adapter_settings().min_aspect_ratio);
|
| @@ -671,16 +672,17 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryWidthRange) {
|
| CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| + // The range includes the default.
|
| {
|
| - const int kMinWidth = 900;
|
| - const int kMaxWidth = 1000;
|
| + constraint_factory_.Reset();
|
| + const int kMinWidth = kDefaultScreenCastWidth - 100;
|
| + const int kMaxWidth = kDefaultScreenCastWidth + 100;
|
| constraint_factory_.basic().width.setMin(kMinWidth);
|
| constraint_factory_.basic().width.setMax(kMaxWidth);
|
| auto result = SelectSettings();
|
| 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 / kDefaultScreenCastAspectRatio),
|
| + EXPECT_EQ(kMaxWidth, result.Width());
|
| + EXPECT_EQ(std::round(kMaxWidth / kDefaultScreenCastAspectRatio),
|
| result.Height());
|
| CheckNonResolutionDefaults(result);
|
| EXPECT_EQ(static_cast<double>(kMinWidth) / kMaxScreenCastDimension,
|
| @@ -690,14 +692,15 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryWidthRange) {
|
| CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| + // The whole range is greater than the default.
|
| {
|
| - const int kMinWidth = 300;
|
| - const int kMaxWidth = 400;
|
| + constraint_factory_.Reset();
|
| + const int kMinWidth = kDefaultScreenCastWidth + 100;
|
| + const int kMaxWidth = kDefaultScreenCastWidth + 200;
|
| constraint_factory_.basic().width.setMin(kMinWidth);
|
| constraint_factory_.basic().width.setMax(kMaxWidth);
|
| auto result = SelectSettings();
|
| 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 / kDefaultScreenCastAspectRatio),
|
| result.Height());
|
| @@ -720,7 +723,7 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealWidth) {
|
| EXPECT_TRUE(result.HasValue());
|
| EXPECT_EQ(kIdealWidth, result.Width());
|
| // When ideal width is given, the algorithm returns a height that is closest
|
| - // to width / kDefaultAspectRatio.
|
| + // to width / kDefaultScreenCastAspectRatio.
|
| EXPECT_EQ(std::round(kIdealWidth / kDefaultScreenCastAspectRatio),
|
| result.Height());
|
| CheckNonResolutionDefaults(result);
|
| @@ -737,7 +740,7 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealWidth) {
|
| auto result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| EXPECT_EQ(kMaxWidth, result.Width());
|
| - // Expect closest to kMaxWidth / kDefaultAspectRatio.
|
| + // Expect closest to kMaxWidth / kDefaultScreenCastAspectRatio.
|
| EXPECT_EQ(std::round(kMaxWidth / kDefaultScreenCastAspectRatio),
|
| result.Height());
|
| CheckNonResolutionDefaults(result);
|
| @@ -758,7 +761,7 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealWidth) {
|
| auto result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| EXPECT_EQ(kMinWidth, result.Width());
|
| - // Expect closest to kMinWidth / kDefaultAspectRatio.
|
| + // Expect closest to kMinWidth / kDefaultScreenCastAspectRatio.
|
| EXPECT_EQ(std::round(kMinWidth / kDefaultScreenCastAspectRatio),
|
| result.Height());
|
| CheckNonResolutionDefaults(result);
|
| @@ -783,36 +786,11 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealWidth) {
|
| EXPECT_TRUE(result.HasValue());
|
| // Ideal width is included in the bounding box.
|
| EXPECT_EQ(kIdealWidth, result.Width());
|
| - // Expect height closest to kIdealWidth / kDefaultAspectRatio, which is
|
| - // 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);
|
| - result = SelectSettings();
|
| - EXPECT_TRUE(result.HasValue());
|
| - EXPECT_EQ(kIdealWidth, result.Width());
|
| - // kIdealWidth / kDefaultAspectRatio outside the box. Closest is
|
| - // 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);
|
| - result = SelectSettings();
|
| - EXPECT_TRUE(result.HasValue());
|
| - EXPECT_EQ(kIdealWidth, result.Width());
|
| - // kIdealWidth / kDefaultAspectRatio is outside the box. Closest is max
|
| - // height.
|
| - EXPECT_EQ(constraint_factory_.basic().height.max(), result.Height());
|
| + // Expect height closest to kIdealWidth / default aspect ratio.
|
| + double default_aspect_ratio =
|
| + static_cast<double>(constraint_factory_.basic().width.max()) /
|
| + constraint_factory_.basic().height.max();
|
| + EXPECT_EQ(std::round(kIdealWidth / default_aspect_ratio), 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);
|
| @@ -831,41 +809,14 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealWidth) {
|
| auto result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| EXPECT_EQ(kMaxWidth, result.Width());
|
| - // kMaxWidth / kDefaultAspectRatio is outside the box. Closest is max
|
| - // height.
|
| + // kMaxWidth / kDefaultScreenCastAspectRatio is 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(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);
|
| - result = SelectSettings();
|
| - EXPECT_TRUE(result.HasValue());
|
| - EXPECT_EQ(kMaxWidth, result.Width());
|
| - // kMaxWidth / kDefaultAspectRatio is outside the box. Closest is
|
| - // 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 / 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.
|
| @@ -1058,10 +1009,10 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealAspectRatio) {
|
| constraint_factory_.basic().aspectRatio.setMax(kMaxAspectRatio);
|
| auto result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| - // Ideal height is greater than the maximum, expect maximum.
|
| - EXPECT_EQ(kDefaultScreenCastHeight, result.Height());
|
| - EXPECT_EQ(std::round(kDefaultScreenCastHeight * kMaxAspectRatio),
|
| - result.Width());
|
| + // Ideal aspect ratio is greater than the maximum, expect maximum.
|
| + EXPECT_EQ(std::round(kDefaultScreenCastWidth / kMaxAspectRatio),
|
| + result.Height());
|
| + EXPECT_EQ(kDefaultScreenCastWidth, result.Width());
|
| CheckNonResolutionDefaults(result);
|
| EXPECT_EQ(
|
| static_cast<double>(kMinScreenCastDimension) / kMaxScreenCastDimension,
|
| @@ -1080,10 +1031,10 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealAspectRatio) {
|
| constraint_factory_.basic().aspectRatio.setMin(kMinAspectRatio);
|
| auto result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| - // Ideal height is greater than the maximum, expect maximum.
|
| - EXPECT_EQ(kDefaultScreenCastHeight, result.Height());
|
| - EXPECT_EQ(std::round(kDefaultScreenCastHeight * kMinAspectRatio),
|
| - result.Width());
|
| + // Ideal aspect ratio is less than the maximum, expect minimum.
|
| + EXPECT_EQ(std::round(kDefaultScreenCastWidth / kMinAspectRatio),
|
| + result.Height());
|
| + EXPECT_EQ(kDefaultScreenCastWidth, result.Width());
|
| CheckNonResolutionDefaults(result);
|
| EXPECT_EQ(kMinAspectRatio,
|
| result.track_adapter_settings().min_aspect_ratio);
|
| @@ -1122,13 +1073,11 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealAspectRatio) {
|
| constraint_factory_.basic().width.setMax(5000);
|
| result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| - // Ideal aspect-ratio is included in the bounding box, with the value
|
| - // closest to a standard width or height and largest area being the cut with
|
| - // the minimum height.
|
| - EXPECT_EQ(constraint_factory_.basic().height.min(), result.Height());
|
| - EXPECT_EQ(std::round(constraint_factory_.basic().height.min() *
|
| - kIdealAspectRatio),
|
| - result.Width());
|
| + // Ideal aspect-ratio is included in the bounding box.
|
| + EXPECT_EQ(
|
| + std::round(constraint_factory_.basic().width.max() / kIdealAspectRatio),
|
| + result.Height());
|
| + EXPECT_EQ(constraint_factory_.basic().width.max(), result.Width());
|
| CheckNonResolutionDefaults(result);
|
| EXPECT_EQ(1000.0 / 5000.0,
|
| result.track_adapter_settings().min_aspect_ratio);
|
| @@ -1136,20 +1085,21 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealAspectRatio) {
|
| result.track_adapter_settings().max_aspect_ratio);
|
| CheckTrackAdapterSettingsEqualsFormat(result);
|
|
|
| + constraint_factory_.Reset();
|
| + constraint_factory_.basic().aspectRatio.setIdeal(kIdealAspectRatio);
|
| constraint_factory_.basic().height.setMin(250);
|
| - constraint_factory_.basic().height.setMax(5000);
|
| constraint_factory_.basic().width.setMin(250);
|
| - constraint_factory_.basic().width.setMax(5000);
|
| result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| - // 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.
|
| + // Ideal aspect-ratio is included in the bounding box. Preserving default
|
| + // height leads to larger area than preserving default 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);
|
| + EXPECT_EQ(250.0 / kMaxScreenCastDimension,
|
| + result.track_adapter_settings().min_aspect_ratio);
|
| + EXPECT_EQ(kMaxScreenCastDimension / 250.0,
|
| + result.track_adapter_settings().max_aspect_ratio);
|
| CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| @@ -1196,10 +1146,11 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealAspectRatio) {
|
|
|
| // Use a box that is bigger and further from the origin to force closeness
|
| // to a different default dimension.
|
| - constraint_factory_.basic().height.setMin(1000);
|
| - constraint_factory_.basic().height.setMax(5000);
|
| - constraint_factory_.basic().width.setMin(1000);
|
| - constraint_factory_.basic().width.setMax(5000);
|
| + constraint_factory_.Reset();
|
| + constraint_factory_.basic().aspectRatio.setMin(kMinAspectRatio);
|
| + constraint_factory_.basic().aspectRatio.setMax(kMaxAspectRatio);
|
| + constraint_factory_.basic().height.setMin(3000);
|
| + constraint_factory_.basic().width.setMin(3000);
|
| constraint_factory_.basic().aspectRatio.setIdeal(3.0);
|
| result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| @@ -1600,20 +1551,22 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest, AdvancedNoiseReduction) {
|
| advanced1.height.setMin(480);
|
| blink::WebMediaTrackConstraintSet& advanced2 =
|
| constraint_factory_.AddAdvanced();
|
| - advanced2.width.setMin(1920);
|
| - advanced2.height.setMin(1080);
|
| + const int kMinWidth = 4000;
|
| + const int kMinHeight = 2000;
|
| + advanced2.width.setMin(kMinWidth);
|
| + advanced2.height.setMin(kMinHeight);
|
| advanced2.googNoiseReduction.setExact(false);
|
| auto result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| - EXPECT_EQ(1920, result.Width());
|
| + EXPECT_EQ(kMinWidth, result.Width());
|
| // Preserves default aspect ratio.
|
| 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),
|
| + EXPECT_EQ(kMinWidth / static_cast<double>(kMaxScreenCastDimension),
|
| result.track_adapter_settings().min_aspect_ratio);
|
| - EXPECT_EQ(static_cast<double>(kMaxScreenCastDimension) / 1080.0,
|
| + EXPECT_EQ(static_cast<double>(kMaxScreenCastDimension) / kMinHeight,
|
| result.track_adapter_settings().max_aspect_ratio);
|
| CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
| @@ -1691,11 +1644,13 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest,
|
|
|
| TEST_F(MediaStreamConstraintsUtilVideoContentTest,
|
| AdvancedContradictoryMinMaxResolutionFrameRate) {
|
| + const int kMinHeight = 2600;
|
| + const int kMinWidth = 2800;
|
| constraint_factory_.Reset();
|
| blink::WebMediaTrackConstraintSet& advanced1 =
|
| constraint_factory_.AddAdvanced();
|
| - advanced1.width.setMin(800);
|
| - advanced1.height.setMin(600);
|
| + advanced1.width.setMin(kMinWidth);
|
| + advanced1.height.setMin(kMinHeight);
|
| blink::WebMediaTrackConstraintSet& advanced2 =
|
| constraint_factory_.AddAdvanced();
|
| advanced2.width.setMax(640);
|
| @@ -1703,12 +1658,13 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest,
|
| advanced2.frameRate.setExact(60.0);
|
| auto result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| - EXPECT_EQ(800, result.Width());
|
| - EXPECT_EQ(600, result.Height());
|
| + EXPECT_EQ(std::round(kMinHeight * kDefaultScreenCastAspectRatio),
|
| + result.Width());
|
| + EXPECT_EQ(kMinHeight, result.Height());
|
| EXPECT_EQ(kDefaultScreenCastFrameRate, result.FrameRate());
|
| - EXPECT_EQ(800.0 / kMaxScreenCastDimension,
|
| + EXPECT_EQ(static_cast<double>(kMinWidth) / kMaxScreenCastDimension,
|
| result.track_adapter_settings().min_aspect_ratio);
|
| - EXPECT_EQ(kMaxScreenCastDimension / 600.0,
|
| + EXPECT_EQ(static_cast<double>(kMaxScreenCastDimension) / kMinHeight,
|
| result.track_adapter_settings().max_aspect_ratio);
|
| CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
| @@ -1787,10 +1743,11 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest,
|
|
|
| TEST_F(MediaStreamConstraintsUtilVideoContentTest,
|
| AdvancedContradictoryWidthFrameRate) {
|
| + const int kMaxWidth = 1920;
|
| constraint_factory_.Reset();
|
| blink::WebMediaTrackConstraintSet& advanced1 =
|
| constraint_factory_.AddAdvanced();
|
| - advanced1.width.setMax(1920);
|
| + advanced1.width.setMax(kMaxWidth);
|
| blink::WebMediaTrackConstraintSet& advanced2 =
|
| constraint_factory_.AddAdvanced();
|
| advanced2.width.setMin(2000);
|
| @@ -1800,36 +1757,39 @@ TEST_F(MediaStreamConstraintsUtilVideoContentTest,
|
| advanced3.frameRate.setExact(90.0);
|
| auto result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| - EXPECT_EQ(kDefaultScreenCastWidth, result.Width());
|
| - EXPECT_EQ(kDefaultScreenCastHeight, result.Height());
|
| + EXPECT_EQ(kMaxWidth, result.Width());
|
| + EXPECT_EQ(std::round(kMaxWidth / kDefaultScreenCastAspectRatio),
|
| + 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,
|
| + EXPECT_EQ(static_cast<double>(kMaxWidth) / kMinScreenCastDimension,
|
| result.track_adapter_settings().max_aspect_ratio);
|
| CheckTrackAdapterSettingsEqualsFormat(result);
|
| }
|
|
|
| TEST_F(MediaStreamConstraintsUtilVideoContentTest,
|
| AdvancedContradictoryHeightFrameRate) {
|
| + const int kMaxHeight = 2000;
|
| constraint_factory_.Reset();
|
| blink::WebMediaTrackConstraintSet& advanced1 =
|
| constraint_factory_.AddAdvanced();
|
| - advanced1.height.setMax(1080);
|
| + advanced1.height.setMax(kMaxHeight);
|
| blink::WebMediaTrackConstraintSet& advanced2 =
|
| constraint_factory_.AddAdvanced();
|
| - advanced2.height.setMin(1500);
|
| + advanced2.height.setMin(4500);
|
| advanced2.frameRate.setExact(10.0);
|
| blink::WebMediaTrackConstraintSet& advanced3 =
|
| constraint_factory_.AddAdvanced();
|
| advanced3.frameRate.setExact(60.0);
|
| auto result = SelectSettings();
|
| EXPECT_TRUE(result.HasValue());
|
| - EXPECT_EQ(kDefaultScreenCastWidth, result.Width());
|
| - EXPECT_EQ(kDefaultScreenCastHeight, result.Height());
|
| + EXPECT_EQ(kMaxHeight * kDefaultScreenCastAspectRatio, result.Width());
|
| + // Height defaults to explicitly given max constraint.
|
| + EXPECT_EQ(kMaxHeight, result.Height());
|
| EXPECT_EQ(60.0, result.FrameRate());
|
| - EXPECT_EQ(static_cast<double>(kMinScreenCastDimension) / 1080.0,
|
| + EXPECT_EQ(static_cast<double>(kMinScreenCastDimension) / kMaxHeight,
|
| result.track_adapter_settings().min_aspect_ratio);
|
| EXPECT_EQ(
|
| static_cast<double>(kMaxScreenCastDimension) / kMinScreenCastDimension,
|
|
|