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

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

Issue 2777703002: Introduce SelectSettings algorithm for MediaStream video tracks. (Closed)
Patch Set: static asserts Created 3 years, 9 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
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);
}
}

Powered by Google App Engine
This is Rietveld 408576698