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

Side by Side Diff: content/renderer/media/media_stream_constraints_util_video_source_unittest.cc

Issue 2664673002: Media Capture Depth Stream Extensions API: videoKind settings and constraint. (Closed)
Patch Set: GetVideoKindForFormat moved to utility. thanks guidou@. Created 3 years, 10 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 unified diff | Download patch
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/media/media_stream_constraints_util_video_source.h" 5 #include "content/renderer/media/media_stream_constraints_util_video_source.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/optional.h" 10 #include "base/optional.h"
11 #include "content/renderer/media/media_stream_video_source.h" 11 #include "content/renderer/media/media_stream_video_source.h"
12 #include "content/renderer/media/mock_constraint_factory.h" 12 #include "content/renderer/media/mock_constraint_factory.h"
13 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
14 #include "third_party/WebKit/public/platform/WebMediaConstraints.h" 14 #include "third_party/WebKit/public/platform/WebMediaConstraints.h"
15 15
16 namespace content { 16 namespace content {
17 17
18 namespace { 18 namespace {
19 19
20 const char kDeviceID1[] = "fake_device_1"; 20 const char kDeviceID1[] = "fake_device_1";
21 const char kDeviceID2[] = "fake_device_2"; 21 const char kDeviceID2[] = "fake_device_2";
22 const char kDeviceID3[] = "fake_device_3"; 22 const char kDeviceID3[] = "fake_device_3";
23 const char kDeviceID4[] = "fake_device_4";
23 } 24 }
24 25
25 class MediaStreamConstraintsUtilVideoSourceTest : public testing::Test { 26 class MediaStreamConstraintsUtilVideoSourceTest : public testing::Test {
26 public: 27 public:
27 void SetUp() override { 28 void SetUp() override {
28 // Default device. It is default because it is the first in the enumeration. 29 // Default device. It is default because it is the first in the enumeration.
29 ::mojom::VideoInputDeviceCapabilitiesPtr device = 30 ::mojom::VideoInputDeviceCapabilitiesPtr device =
30 ::mojom::VideoInputDeviceCapabilities::New(); 31 ::mojom::VideoInputDeviceCapabilities::New();
31 device->device_id = kDeviceID1; 32 device->device_id = kDeviceID1;
32 device->facing_mode = ::mojom::FacingMode::NONE; 33 device->facing_mode = ::mojom::FacingMode::NONE;
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 media::PIXEL_FORMAT_I420), 79 media::PIXEL_FORMAT_I420),
79 media::VideoCaptureFormat(gfx::Size(1280, 720), 60.0f, 80 media::VideoCaptureFormat(gfx::Size(1280, 720), 60.0f,
80 media::PIXEL_FORMAT_I420), 81 media::PIXEL_FORMAT_I420),
81 media::VideoCaptureFormat(gfx::Size(1920, 1080), 60.0f, 82 media::VideoCaptureFormat(gfx::Size(1920, 1080), 60.0f,
82 media::PIXEL_FORMAT_I420), 83 media::PIXEL_FORMAT_I420),
83 media::VideoCaptureFormat(gfx::Size(2304, 1536), 10.0f, 84 media::VideoCaptureFormat(gfx::Size(2304, 1536), 10.0f,
84 media::PIXEL_FORMAT_I420), 85 media::PIXEL_FORMAT_I420),
85 }; 86 };
86 capabilities_.device_capabilities.push_back(std::move(device)); 87 capabilities_.device_capabilities.push_back(std::move(device));
87 88
89 // A depth capture device.
90 device = ::mojom::VideoInputDeviceCapabilities::New();
91 device->device_id = kDeviceID4;
92 device->facing_mode = ::mojom::FacingMode::ENVIRONMENT;
93 device->formats = {media::VideoCaptureFormat(gfx::Size(640, 480), 30.0f,
94 media::PIXEL_FORMAT_Y16)};
95 capabilities_.device_capabilities.push_back(std::move(device));
96
88 capabilities_.power_line_capabilities = { 97 capabilities_.power_line_capabilities = {
89 media::PowerLineFrequency::FREQUENCY_DEFAULT, 98 media::PowerLineFrequency::FREQUENCY_DEFAULT,
90 media::PowerLineFrequency::FREQUENCY_50HZ, 99 media::PowerLineFrequency::FREQUENCY_50HZ,
91 media::PowerLineFrequency::FREQUENCY_60HZ, 100 media::PowerLineFrequency::FREQUENCY_60HZ,
92 }; 101 };
93 102
94 default_device_ = capabilities_.device_capabilities[0].get(); 103 default_device_ = capabilities_.device_capabilities[0].get();
95 low_res_device_ = capabilities_.device_capabilities[1].get(); 104 low_res_device_ = capabilities_.device_capabilities[1].get();
96 high_res_device_ = capabilities_.device_capabilities[2].get(); 105 high_res_device_ = capabilities_.device_capabilities[2].get();
97 default_closest_format_ = &default_device_->formats[1]; 106 default_closest_format_ = &default_device_->formats[1];
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 constraint_factory_.Reset(); 156 constraint_factory_.Reset();
148 // No device in |capabilities_| has facing mode equal to LEFT. 157 // No device in |capabilities_| has facing mode equal to LEFT.
149 constraint_factory_.basic().facingMode.setExact( 158 constraint_factory_.basic().facingMode.setExact(
150 blink::WebString::fromASCII("left")); 159 blink::WebString::fromASCII("left"));
151 auto result = SelectSettings(); 160 auto result = SelectSettings();
152 EXPECT_FALSE(result.has_value()); 161 EXPECT_FALSE(result.has_value());
153 EXPECT_EQ(constraint_factory_.basic().facingMode.name(), 162 EXPECT_EQ(constraint_factory_.basic().facingMode.name(),
154 result.failed_constraint_name); 163 result.failed_constraint_name);
155 } 164 }
156 165
166 TEST_F(MediaStreamConstraintsUtilVideoSourceTest, OverconstrainedOnVideoKind) {
167 constraint_factory_.Reset();
168 // No device in |capabilities_| has video kind infrared.
169 constraint_factory_.basic().videoKind.setExact(
170 blink::WebString::fromASCII("infrared"));
171 auto result = SelectSettings();
172 EXPECT_FALSE(result.has_value());
173 EXPECT_EQ(constraint_factory_.basic().videoKind.name(),
174 result.failed_constraint_name);
175 }
176
157 TEST_F(MediaStreamConstraintsUtilVideoSourceTest, OverconstrainedOnHeight) { 177 TEST_F(MediaStreamConstraintsUtilVideoSourceTest, OverconstrainedOnHeight) {
158 constraint_factory_.Reset(); 178 constraint_factory_.Reset();
159 constraint_factory_.basic().height.setExact(123467890); 179 constraint_factory_.basic().height.setExact(123467890);
160 auto result = SelectSettings(); 180 auto result = SelectSettings();
161 EXPECT_FALSE(result.has_value()); 181 EXPECT_FALSE(result.has_value());
162 EXPECT_EQ(constraint_factory_.basic().height.name(), 182 EXPECT_EQ(constraint_factory_.basic().height.name(),
163 result.failed_constraint_name); 183 result.failed_constraint_name);
164 184
165 constraint_factory_.Reset(); 185 constraint_factory_.Reset();
166 constraint_factory_.basic().height.setMin(123467890); 186 constraint_factory_.basic().height.setMin(123467890);
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
323 EXPECT_TRUE(result.has_value()); 343 EXPECT_TRUE(result.has_value());
324 EXPECT_EQ(::mojom::FacingMode::USER, result.settings.facing_mode()); 344 EXPECT_EQ(::mojom::FacingMode::USER, result.settings.facing_mode());
325 // Only the high-res device supports user facing mode. Should select default 345 // Only the high-res device supports user facing mode. Should select default
326 // settings for everything else. 346 // settings for everything else.
327 EXPECT_EQ(high_res_device_->device_id, result.settings.device_id()); 347 EXPECT_EQ(high_res_device_->device_id, result.settings.device_id());
328 EXPECT_EQ(*high_res_closest_format_, result.settings.format()); 348 EXPECT_EQ(*high_res_closest_format_, result.settings.format());
329 EXPECT_EQ(media::PowerLineFrequency::FREQUENCY_DEFAULT, 349 EXPECT_EQ(media::PowerLineFrequency::FREQUENCY_DEFAULT,
330 result.settings.power_line_frequency()); 350 result.settings.power_line_frequency());
331 } 351 }
332 352
353 TEST_F(MediaStreamConstraintsUtilVideoSourceTest, MandatoryVideoKind) {
354 constraint_factory_.Reset();
355 constraint_factory_.basic().videoKind.setExact(
356 blink::WebString::fromASCII("depth"));
357 auto result = SelectSettings();
358 EXPECT_TRUE(result.has_value());
359 EXPECT_EQ(kDeviceID4, result.settings.device_id());
360 EXPECT_EQ(media::PIXEL_FORMAT_Y16, result.settings.format().pixel_format);
361
362 constraint_factory_.basic().videoKind.setExact(
363 blink::WebString::fromASCII("color"));
364 result = SelectSettings();
365 EXPECT_TRUE(result.has_value());
366 EXPECT_EQ(default_device_->device_id, result.settings.device_id());
367 }
368
333 TEST_F(MediaStreamConstraintsUtilVideoSourceTest, MandatoryPowerLineFrequency) { 369 TEST_F(MediaStreamConstraintsUtilVideoSourceTest, MandatoryPowerLineFrequency) {
334 constraint_factory_.Reset(); 370 constraint_factory_.Reset();
335 const media::PowerLineFrequency kPowerLineFrequencies[] = { 371 const media::PowerLineFrequency kPowerLineFrequencies[] = {
336 media::PowerLineFrequency::FREQUENCY_50HZ, 372 media::PowerLineFrequency::FREQUENCY_50HZ,
337 media::PowerLineFrequency::FREQUENCY_60HZ}; 373 media::PowerLineFrequency::FREQUENCY_60HZ};
338 for (auto power_line_frequency : kPowerLineFrequencies) { 374 for (auto power_line_frequency : kPowerLineFrequencies) {
339 constraint_factory_.basic().googPowerLineFrequency.setExact( 375 constraint_factory_.basic().googPowerLineFrequency.setExact(
340 static_cast<long>(power_line_frequency)); 376 static_cast<long>(power_line_frequency));
341 auto result = SelectSettings(); 377 auto result = SelectSettings();
342 EXPECT_TRUE(result.has_value()); 378 EXPECT_TRUE(result.has_value());
(...skipping 925 matching lines...) Expand 10 before | Expand all | Expand 10 after
1268 constraint_factory_.Reset(); 1304 constraint_factory_.Reset();
1269 constraint_factory_.basic().height.setExact(100); 1305 constraint_factory_.basic().height.setExact(100);
1270 VideoCaptureCapabilities capabilities; 1306 VideoCaptureCapabilities capabilities;
1271 auto result = SelectVideoCaptureSourceSettings( 1307 auto result = SelectVideoCaptureSourceSettings(
1272 capabilities, constraint_factory_.CreateWebMediaConstraints()); 1308 capabilities, constraint_factory_.CreateWebMediaConstraints());
1273 EXPECT_FALSE(result.has_value()); 1309 EXPECT_FALSE(result.has_value());
1274 EXPECT_TRUE(std::string(result.failed_constraint_name).empty()); 1310 EXPECT_TRUE(std::string(result.failed_constraint_name).empty());
1275 } 1311 }
1276 1312
1277 } // namespace content 1313 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698