Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2245)

Unified Diff: content/renderer/media/media_stream_constraints_util_video_content_unittest.cc

Issue 2806703002: Update constraints algorithm for video content capture. (Closed)
Patch Set: re-add tests Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/renderer/media/media_stream_constraints_util_video_content.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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,
« no previous file with comments | « content/renderer/media/media_stream_constraints_util_video_content.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698