OLD | NEW |
---|---|
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_content.h" | 5 #include "content/renderer/media/media_stream_constraints_util_video_content.h" |
6 | 6 |
7 #include <cmath> | 7 #include <cmath> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "content/renderer/media/mock_constraint_factory.h" | 10 #include "content/renderer/media/mock_constraint_factory.h" |
11 #include "media/base/limits.h" | 11 #include "media/base/limits.h" |
12 #include "testing/gtest/include/gtest/gtest.h" | 12 #include "testing/gtest/include/gtest/gtest.h" |
13 #include "third_party/WebKit/public/platform/WebMediaConstraints.h" | 13 #include "third_party/WebKit/public/platform/WebMediaConstraints.h" |
14 | 14 |
15 namespace content { | 15 namespace content { |
16 | 16 |
17 namespace { | 17 namespace { |
18 | 18 |
19 const double kDefaultScreenCastAspectRatio = | |
20 static_cast<double>(kDefaultScreenCastWidth) / | |
21 static_cast<double>(kDefaultScreenCastHeight); | |
22 | |
23 void CheckNonResolutionDefaults(const VideoCaptureSettings& result) { | 19 void CheckNonResolutionDefaults(const VideoCaptureSettings& result) { |
24 EXPECT_EQ(kDefaultScreenCastFrameRate, result.FrameRate()); | 20 EXPECT_EQ(kDefaultScreenCastFrameRate, result.FrameRate()); |
25 EXPECT_EQ(base::Optional<bool>(), result.noise_reduction()); | 21 EXPECT_EQ(base::Optional<bool>(), result.noise_reduction()); |
26 EXPECT_EQ(std::string(), result.device_id()); | 22 EXPECT_EQ(std::string(), result.device_id()); |
27 } | 23 } |
28 | 24 |
29 void CheckNonFrameRateDefaults(const VideoCaptureSettings& result) { | 25 void CheckNonFrameRateDefaults(const VideoCaptureSettings& result) { |
30 EXPECT_EQ(kDefaultScreenCastHeight, result.Height()); | 26 EXPECT_EQ(kDefaultScreenCastHeight, result.Height()); |
31 EXPECT_EQ(kDefaultScreenCastWidth, result.Width()); | 27 EXPECT_EQ(kDefaultScreenCastWidth, result.Width()); |
32 EXPECT_EQ(base::Optional<bool>(), result.noise_reduction()); | 28 EXPECT_EQ(base::Optional<bool>(), result.noise_reduction()); |
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
261 result.Width()); | 257 result.Width()); |
262 CheckNonResolutionDefaults(result); | 258 CheckNonResolutionDefaults(result); |
263 EXPECT_EQ(1.0 / kHeight, result.track_adapter_settings().min_aspect_ratio); | 259 EXPECT_EQ(1.0 / kHeight, result.track_adapter_settings().min_aspect_ratio); |
264 EXPECT_EQ(static_cast<double>(kMaxScreenCastDimension) / kHeight, | 260 EXPECT_EQ(static_cast<double>(kMaxScreenCastDimension) / kHeight, |
265 result.track_adapter_settings().max_aspect_ratio); | 261 result.track_adapter_settings().max_aspect_ratio); |
266 CheckTrackAdapterSettingsEqualsFormat(result); | 262 CheckTrackAdapterSettingsEqualsFormat(result); |
267 } | 263 } |
268 | 264 |
269 TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryMinHeight) { | 265 TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryMinHeight) { |
270 constraint_factory_.Reset(); | 266 constraint_factory_.Reset(); |
271 const int kHeight = 1000; | 267 const int kHeight = 2000; |
272 constraint_factory_.basic().height.setMin(kHeight); | 268 constraint_factory_.basic().height.setMin(kHeight); |
273 auto result = SelectSettings(); | 269 auto result = SelectSettings(); |
274 EXPECT_TRUE(result.HasValue()); | 270 EXPECT_TRUE(result.HasValue()); |
275 // kHeight is greater that the default, so expect kHeight. | 271 // kHeight is greater that the default, so expect kHeight. |
276 EXPECT_EQ(kHeight, result.Height()); | 272 EXPECT_EQ(kHeight, result.Height()); |
277 EXPECT_EQ(std::round(kHeight * kDefaultScreenCastAspectRatio), | 273 EXPECT_EQ(std::round(kHeight * kDefaultScreenCastAspectRatio), |
278 result.Width()); | 274 result.Width()); |
279 CheckNonResolutionDefaults(result); | 275 CheckNonResolutionDefaults(result); |
280 EXPECT_EQ(1.0 / kMaxScreenCastDimension, | 276 EXPECT_EQ(1.0 / kMaxScreenCastDimension, |
281 result.track_adapter_settings().min_aspect_ratio); | 277 result.track_adapter_settings().min_aspect_ratio); |
(...skipping 11 matching lines...) Expand all Loading... | |
293 CheckNonResolutionDefaults(result); | 289 CheckNonResolutionDefaults(result); |
294 EXPECT_EQ(1.0 / kMaxScreenCastDimension, | 290 EXPECT_EQ(1.0 / kMaxScreenCastDimension, |
295 result.track_adapter_settings().min_aspect_ratio); | 291 result.track_adapter_settings().min_aspect_ratio); |
296 EXPECT_EQ(static_cast<double>(kMaxScreenCastDimension) / kSmallHeight, | 292 EXPECT_EQ(static_cast<double>(kMaxScreenCastDimension) / kSmallHeight, |
297 result.track_adapter_settings().max_aspect_ratio); | 293 result.track_adapter_settings().max_aspect_ratio); |
298 CheckTrackAdapterSettingsEqualsFormat(result); | 294 CheckTrackAdapterSettingsEqualsFormat(result); |
299 } | 295 } |
300 | 296 |
301 TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryMaxHeight) { | 297 TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryMaxHeight) { |
302 constraint_factory_.Reset(); | 298 constraint_factory_.Reset(); |
303 const int kHeight = 1000; | 299 const int kMaxHeight = 100; |
304 constraint_factory_.basic().height.setMax(kHeight); | 300 constraint_factory_.basic().height.setMax(kMaxHeight); |
305 auto result = SelectSettings(); | 301 auto result = SelectSettings(); |
306 EXPECT_TRUE(result.HasValue()); | 302 EXPECT_TRUE(result.HasValue()); |
307 // kHeight is greater that the default, so expect the default. | 303 // kSmallHeight is less that the default, so expect kSmallHeight. |
hbos_chromium
2017/04/07 13:16:29
nit: comment variable name and variable name don't
Guido Urdaneta
2017/04/07 15:05:19
Done.
| |
308 EXPECT_EQ(kDefaultScreenCastHeight, result.Height()); | 304 EXPECT_EQ(kMaxHeight, result.Height()); |
309 EXPECT_EQ(kDefaultScreenCastWidth, result.Width()); | 305 EXPECT_EQ(std::round(kMaxHeight * kDefaultScreenCastAspectRatio), |
306 result.Width()); | |
310 CheckNonResolutionDefaults(result); | 307 CheckNonResolutionDefaults(result); |
311 EXPECT_EQ(1.0 / kHeight, result.track_adapter_settings().min_aspect_ratio); | 308 EXPECT_EQ(1.0 / kMaxHeight, result.track_adapter_settings().min_aspect_ratio); |
312 EXPECT_EQ(kMaxScreenCastDimension, | 309 EXPECT_EQ(kMaxScreenCastDimension, |
313 result.track_adapter_settings().max_aspect_ratio); | 310 result.track_adapter_settings().max_aspect_ratio); |
314 CheckTrackAdapterSettingsEqualsFormat(result); | 311 CheckTrackAdapterSettingsEqualsFormat(result); |
315 | |
316 const int kSmallHeight = 100; | |
317 constraint_factory_.basic().height.setMax(kSmallHeight); | |
318 result = SelectSettings(); | |
319 EXPECT_TRUE(result.HasValue()); | |
320 // kSmallHeight is less that the default, so expect kSmallHeight. | |
321 EXPECT_EQ(kSmallHeight, result.Height()); | |
322 EXPECT_EQ(std::round(kSmallHeight * kDefaultScreenCastAspectRatio), | |
323 result.Width()); | |
324 CheckNonResolutionDefaults(result); | |
325 EXPECT_EQ(1.0 / kSmallHeight, | |
326 result.track_adapter_settings().min_aspect_ratio); | |
327 EXPECT_EQ(kMaxScreenCastDimension, | |
328 result.track_adapter_settings().max_aspect_ratio); | |
329 CheckTrackAdapterSettingsEqualsFormat(result); | |
330 } | 312 } |
331 | 313 |
332 TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryHeightRange) { | 314 TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryHeightRange) { |
333 constraint_factory_.Reset(); | 315 constraint_factory_.Reset(); |
334 { | 316 { |
335 const int kMinHeight = 300; | 317 const int kMinHeight = 300; |
336 const int kMaxHeight = 1000; | |
337 constraint_factory_.basic().height.setMin(kMinHeight); | |
338 constraint_factory_.basic().height.setMax(kMaxHeight); | |
339 auto result = SelectSettings(); | |
340 EXPECT_TRUE(result.HasValue()); | |
341 // The range includes the default, so expect the default. | |
342 EXPECT_EQ(kDefaultScreenCastHeight, result.Height()); | |
343 EXPECT_EQ(kDefaultScreenCastWidth, result.Width()); | |
344 CheckNonResolutionDefaults(result); | |
345 EXPECT_EQ(1.0 / kMaxHeight, | |
346 result.track_adapter_settings().min_aspect_ratio); | |
347 EXPECT_EQ(static_cast<double>(kMaxScreenCastDimension) / kMinHeight, | |
348 result.track_adapter_settings().max_aspect_ratio); | |
349 CheckTrackAdapterSettingsEqualsFormat(result); | |
350 } | |
351 | |
352 { | |
353 const int kMinHeight = 900; | |
354 const int kMaxHeight = 1000; | |
355 constraint_factory_.basic().height.setMin(kMinHeight); | |
356 constraint_factory_.basic().height.setMax(kMaxHeight); | |
357 auto result = SelectSettings(); | |
358 EXPECT_TRUE(result.HasValue()); | |
359 // The whole range is greater than the default, so expect the range minimum. | |
360 EXPECT_EQ(kMinHeight, result.Height()); | |
361 EXPECT_EQ(std::round(kMinHeight * kDefaultScreenCastAspectRatio), | |
362 result.Width()); | |
363 CheckNonResolutionDefaults(result); | |
364 EXPECT_EQ(1.0 / kMaxHeight, | |
365 result.track_adapter_settings().min_aspect_ratio); | |
366 EXPECT_EQ(static_cast<double>(kMaxScreenCastDimension) / kMinHeight, | |
367 result.track_adapter_settings().max_aspect_ratio); | |
368 CheckTrackAdapterSettingsEqualsFormat(result); | |
369 } | |
370 | |
371 { | |
372 const int kMinHeight = 300; | |
373 const int kMaxHeight = 400; | 318 const int kMaxHeight = 400; |
hbos_chromium
2017/04/07 13:16:29
I think you shouldn't remove these test cases to m
Guido Urdaneta
2017/04/07 15:05:19
Done.
| |
374 constraint_factory_.basic().height.setMin(kMinHeight); | 319 constraint_factory_.basic().height.setMin(kMinHeight); |
375 constraint_factory_.basic().height.setMax(kMaxHeight); | 320 constraint_factory_.basic().height.setMax(kMaxHeight); |
376 auto result = SelectSettings(); | 321 auto result = SelectSettings(); |
377 EXPECT_TRUE(result.HasValue()); | 322 EXPECT_TRUE(result.HasValue()); |
378 // The whole range is less than the default, so expect the range maximum. | 323 // The whole range is less than the default, so expect the range maximum. |
379 EXPECT_EQ(kMaxHeight, result.Height()); | 324 EXPECT_EQ(kMaxHeight, result.Height()); |
380 EXPECT_EQ(std::round(kMaxHeight * kDefaultScreenCastAspectRatio), | 325 EXPECT_EQ(std::round(kMaxHeight * kDefaultScreenCastAspectRatio), |
381 result.Width()); | 326 result.Width()); |
382 CheckNonResolutionDefaults(result); | 327 CheckNonResolutionDefaults(result); |
383 EXPECT_EQ(1.0 / kMaxHeight, | 328 EXPECT_EQ(1.0 / kMaxHeight, |
384 result.track_adapter_settings().min_aspect_ratio); | 329 result.track_adapter_settings().min_aspect_ratio); |
385 EXPECT_EQ(static_cast<double>(kMaxScreenCastDimension) / kMinHeight, | 330 EXPECT_EQ(static_cast<double>(kMaxScreenCastDimension) / kMinHeight, |
386 result.track_adapter_settings().max_aspect_ratio); | 331 result.track_adapter_settings().max_aspect_ratio); |
387 CheckTrackAdapterSettingsEqualsFormat(result); | 332 CheckTrackAdapterSettingsEqualsFormat(result); |
388 } | 333 } |
389 } | 334 } |
390 | 335 |
391 TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealHeight) { | 336 TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealHeight) { |
392 // Unconstrained. | 337 // Unconstrained. |
393 { | 338 { |
394 constraint_factory_.Reset(); | 339 constraint_factory_.Reset(); |
395 const int kIdealHeight = 1000; | 340 const int kIdealHeight = 1000; |
396 constraint_factory_.basic().height.setIdeal(kIdealHeight); | 341 constraint_factory_.basic().height.setIdeal(kIdealHeight); |
397 auto result = SelectSettings(); | 342 auto result = SelectSettings(); |
398 EXPECT_TRUE(result.HasValue()); | 343 EXPECT_TRUE(result.HasValue()); |
399 EXPECT_EQ(kIdealHeight, result.Height()); | 344 EXPECT_EQ(kIdealHeight, result.Height()); |
400 // When ideal height is given, the algorithm returns a width that is closest | 345 // When ideal height is given, the algorithm returns a width that is closest |
401 // to height * kDefaultAspectRatio. | 346 // to height * kDefaultScreenCastAspectRatio. |
402 EXPECT_EQ(std::round(kIdealHeight * kDefaultScreenCastAspectRatio), | 347 EXPECT_EQ(std::round(kIdealHeight * kDefaultScreenCastAspectRatio), |
403 result.Width()); | 348 result.Width()); |
404 CheckNonResolutionDefaults(result); | 349 CheckNonResolutionDefaults(result); |
405 CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result); | 350 CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result); |
406 } | 351 } |
407 | 352 |
408 // Ideal greater than maximum. | 353 // Ideal greater than maximum. |
409 { | 354 { |
410 constraint_factory_.Reset(); | 355 constraint_factory_.Reset(); |
411 const int kIdealHeight = 1000; | 356 const int kIdealHeight = 1000; |
412 const int kMaxHeight = 800; | 357 const int kMaxHeight = 800; |
413 constraint_factory_.basic().height.setIdeal(kIdealHeight); | 358 constraint_factory_.basic().height.setIdeal(kIdealHeight); |
414 constraint_factory_.basic().height.setMax(kMaxHeight); | 359 constraint_factory_.basic().height.setMax(kMaxHeight); |
415 auto result = SelectSettings(); | 360 auto result = SelectSettings(); |
416 EXPECT_TRUE(result.HasValue()); | 361 EXPECT_TRUE(result.HasValue()); |
417 // Ideal height is greater than the maximum, expect maximum. | 362 // Ideal height is greater than the maximum, expect maximum. |
418 EXPECT_EQ(kMaxHeight, result.Height()); | 363 EXPECT_EQ(kMaxHeight, result.Height()); |
419 // Expect closest to kMaxHeight * kDefaultAspectRatio. | 364 // Expect closest to kMaxHeight * kDefaultScreenCastAspectRatio. |
420 EXPECT_EQ(std::round(kMaxHeight * kDefaultScreenCastAspectRatio), | 365 EXPECT_EQ(std::round(kMaxHeight * kDefaultScreenCastAspectRatio), |
421 result.Width()); | 366 result.Width()); |
422 CheckNonResolutionDefaults(result); | 367 CheckNonResolutionDefaults(result); |
423 EXPECT_EQ(1.0 / kMaxHeight, | 368 EXPECT_EQ(1.0 / kMaxHeight, |
424 result.track_adapter_settings().min_aspect_ratio); | 369 result.track_adapter_settings().min_aspect_ratio); |
425 EXPECT_EQ(kMaxScreenCastDimension, | 370 EXPECT_EQ(kMaxScreenCastDimension, |
426 result.track_adapter_settings().max_aspect_ratio); | 371 result.track_adapter_settings().max_aspect_ratio); |
427 CheckTrackAdapterSettingsEqualsFormat(result); | 372 CheckTrackAdapterSettingsEqualsFormat(result); |
428 } | 373 } |
429 | 374 |
430 // Ideal less than minimum. | 375 // Ideal less than minimum. |
431 { | 376 { |
432 constraint_factory_.Reset(); | 377 constraint_factory_.Reset(); |
433 const int kIdealHeight = 1000; | 378 const int kIdealHeight = 1000; |
434 const int kMinHeight = 1200; | 379 const int kMinHeight = 1200; |
435 constraint_factory_.basic().height.setIdeal(kIdealHeight); | 380 constraint_factory_.basic().height.setIdeal(kIdealHeight); |
436 constraint_factory_.basic().height.setMin(kMinHeight); | 381 constraint_factory_.basic().height.setMin(kMinHeight); |
437 auto result = SelectSettings(); | 382 auto result = SelectSettings(); |
438 EXPECT_TRUE(result.HasValue()); | 383 EXPECT_TRUE(result.HasValue()); |
439 // Ideal height is less than the minimum, expect minimum. | 384 // Ideal height is less than the minimum, expect minimum. |
440 EXPECT_EQ(kMinHeight, result.Height()); | 385 EXPECT_EQ(kMinHeight, result.Height()); |
441 // Expect closest to kMinHeight * kDefaultAspectRatio. | 386 // Expect closest to kMinHeight * kDefaultScreenCastAspectRatio. |
442 EXPECT_EQ(std::round(kMinHeight * kDefaultScreenCastAspectRatio), | 387 EXPECT_EQ(std::round(kMinHeight * kDefaultScreenCastAspectRatio), |
443 result.Width()); | 388 result.Width()); |
444 CheckNonResolutionDefaults(result); | 389 CheckNonResolutionDefaults(result); |
445 EXPECT_EQ(1.0 / kMaxScreenCastDimension, | 390 EXPECT_EQ(1.0 / kMaxScreenCastDimension, |
446 result.track_adapter_settings().min_aspect_ratio); | 391 result.track_adapter_settings().min_aspect_ratio); |
447 EXPECT_EQ(static_cast<double>(kMaxScreenCastDimension) / kMinHeight, | 392 EXPECT_EQ(static_cast<double>(kMaxScreenCastDimension) / kMinHeight, |
448 result.track_adapter_settings().max_aspect_ratio); | 393 result.track_adapter_settings().max_aspect_ratio); |
449 CheckTrackAdapterSettingsEqualsFormat(result); | 394 CheckTrackAdapterSettingsEqualsFormat(result); |
450 } | 395 } |
451 | 396 |
452 // Ideal intersects a box. | 397 // Ideal intersects a box. |
453 { | 398 { |
454 constraint_factory_.Reset(); | 399 constraint_factory_.Reset(); |
455 constraint_factory_.basic().height.setMin(500); | 400 constraint_factory_.basic().height.setMin(500); |
456 constraint_factory_.basic().height.setMax(1000); | 401 constraint_factory_.basic().height.setMax(1000); |
457 constraint_factory_.basic().width.setMin(100); | 402 constraint_factory_.basic().width.setMin(100); |
458 constraint_factory_.basic().width.setMax(500); | 403 constraint_factory_.basic().width.setMax(500); |
459 const int kIdealHeight = 750; | 404 const int kIdealHeight = 750; |
460 constraint_factory_.basic().height.setIdeal(kIdealHeight); | 405 constraint_factory_.basic().height.setIdeal(kIdealHeight); |
461 auto result = SelectSettings(); | 406 auto result = SelectSettings(); |
462 EXPECT_TRUE(result.HasValue()); | 407 EXPECT_TRUE(result.HasValue()); |
463 // Ideal height is included in the bounding box. | 408 // Ideal height is included in the bounding box. |
464 EXPECT_EQ(kIdealHeight, result.Height()); | 409 EXPECT_EQ(kIdealHeight, result.Height()); |
465 // Expect width closest to kIdealHeight * kDefaultAspectRatio, which is | 410 double default_aspect_ratio = |
466 // outside the box. Closest is max width. | 411 static_cast<double>(constraint_factory_.basic().width.max()) / |
467 EXPECT_EQ(constraint_factory_.basic().width.max(), result.Width()); | 412 constraint_factory_.basic().height.max(); |
413 // Expect width closest to kIdealHeight * default aspect ratio. | |
414 EXPECT_EQ(std::round(kIdealHeight * default_aspect_ratio), result.Width()); | |
468 CheckNonResolutionDefaults(result); | 415 CheckNonResolutionDefaults(result); |
469 EXPECT_EQ(100.0 / 1000.0, result.track_adapter_settings().min_aspect_ratio); | 416 EXPECT_EQ(100.0 / 1000.0, result.track_adapter_settings().min_aspect_ratio); |
470 EXPECT_EQ(500.0 / 500.0, result.track_adapter_settings().max_aspect_ratio); | 417 EXPECT_EQ(500.0 / 500.0, result.track_adapter_settings().max_aspect_ratio); |
471 CheckTrackAdapterSettingsEqualsFormat(result); | |
472 | |
473 constraint_factory_.basic().width.setMin(1200); | |
474 constraint_factory_.basic().width.setMax(2000); | |
475 result = SelectSettings(); | |
476 EXPECT_TRUE(result.HasValue()); | |
477 EXPECT_EQ(kIdealHeight, result.Height()); | |
478 // kIdealHeight * kDefaultAspectRatio is outside the box. Closest is | |
479 // min width. | |
480 EXPECT_EQ(constraint_factory_.basic().width.min(), result.Width()); | |
481 CheckNonResolutionDefaults(result); | |
482 EXPECT_EQ(1200.0 / 1000.0, | |
483 result.track_adapter_settings().min_aspect_ratio); | |
484 EXPECT_EQ(2000.0 / 500.0, result.track_adapter_settings().max_aspect_ratio); | |
485 CheckTrackAdapterSettingsEqualsFormat(result); | |
486 | |
487 constraint_factory_.basic().width.setMin(100); | |
488 constraint_factory_.basic().width.setMax(500); | |
489 result = SelectSettings(); | |
490 EXPECT_TRUE(result.HasValue()); | |
491 EXPECT_EQ(kIdealHeight, result.Height()); | |
492 // kIdealHeight * kDefaultAspectRatio is outside the box. Closest is | |
493 // max width. | |
494 EXPECT_EQ(constraint_factory_.basic().width.max(), result.Width()); | |
495 CheckNonResolutionDefaults(result); | |
496 EXPECT_EQ(100.0 / 1000.0, result.track_adapter_settings().min_aspect_ratio); | |
497 EXPECT_EQ(500.0 / 500.0, result.track_adapter_settings().max_aspect_ratio); | |
498 CheckTrackAdapterSettingsEqualsFormat(result); | 418 CheckTrackAdapterSettingsEqualsFormat(result); |
499 } | 419 } |
500 | 420 |
501 // Ideal outside the box, closest to the side coinciding with max height. | 421 // Ideal outside the box, closest to the side coinciding with max height. |
502 { | 422 { |
503 const int kMaxHeight = 1000; | 423 const int kMaxHeight = 1000; |
504 constraint_factory_.Reset(); | 424 constraint_factory_.Reset(); |
505 constraint_factory_.basic().height.setMin(500); | 425 constraint_factory_.basic().height.setMin(500); |
506 constraint_factory_.basic().height.setMax(kMaxHeight); | 426 constraint_factory_.basic().height.setMax(kMaxHeight); |
507 constraint_factory_.basic().width.setMin(100); | 427 constraint_factory_.basic().width.setMin(100); |
508 constraint_factory_.basic().width.setMax(500); | 428 constraint_factory_.basic().width.setMax(500); |
509 constraint_factory_.basic().height.setIdeal(1200); | 429 constraint_factory_.basic().height.setIdeal(1200); |
510 auto result = SelectSettings(); | 430 auto result = SelectSettings(); |
511 EXPECT_TRUE(result.HasValue()); | 431 EXPECT_TRUE(result.HasValue()); |
512 EXPECT_EQ(kMaxHeight, result.Height()); | 432 EXPECT_EQ(kMaxHeight, result.Height()); |
513 // Expect width closest to kMaxHeight * kDefaultAspectRatio, which is | 433 // Expect width closest to kMaxHeight * default aspect ratio, which is |
514 // outside the box. Closest it max width. | 434 // outside the box. Closest it max width. |
515 EXPECT_EQ(constraint_factory_.basic().width.max(), result.Width()); | 435 EXPECT_EQ(constraint_factory_.basic().width.max(), result.Width()); |
516 CheckNonResolutionDefaults(result); | 436 CheckNonResolutionDefaults(result); |
517 EXPECT_EQ(100.0 / kMaxHeight, | 437 EXPECT_EQ(100.0 / kMaxHeight, |
518 result.track_adapter_settings().min_aspect_ratio); | 438 result.track_adapter_settings().min_aspect_ratio); |
519 EXPECT_EQ(500.0 / 500.0, result.track_adapter_settings().max_aspect_ratio); | 439 EXPECT_EQ(500.0 / 500.0, result.track_adapter_settings().max_aspect_ratio); |
520 CheckTrackAdapterSettingsEqualsFormat(result); | 440 CheckTrackAdapterSettingsEqualsFormat(result); |
521 | |
522 constraint_factory_.basic().width.setMin(1500); | |
523 constraint_factory_.basic().width.setMax(2000); | |
524 result = SelectSettings(); | |
525 EXPECT_TRUE(result.HasValue()); | |
526 EXPECT_EQ(kMaxHeight, result.Height()); | |
527 // kMaxHeight * kDefaultAspectRatio is outside the box. Closest is min | |
528 // width. | |
529 EXPECT_EQ(constraint_factory_.basic().width.min(), result.Width()); | |
530 CheckNonResolutionDefaults(result); | |
531 EXPECT_EQ(1500.0 / kMaxHeight, | |
532 result.track_adapter_settings().min_aspect_ratio); | |
533 EXPECT_EQ(2000.0 / 500.0, result.track_adapter_settings().max_aspect_ratio); | |
534 CheckTrackAdapterSettingsEqualsFormat(result); | |
535 | |
536 constraint_factory_.basic().width.setMin(100); | |
537 result = SelectSettings(); | |
538 EXPECT_TRUE(result.HasValue()); | |
539 EXPECT_EQ(kMaxHeight, result.Height()); | |
540 // kMaxHeight * kDefaultAspectRatio is within the width limits. | |
541 EXPECT_EQ(std::round(kMaxHeight * kDefaultScreenCastAspectRatio), | |
542 result.Width()); | |
543 CheckNonResolutionDefaults(result); | |
544 EXPECT_EQ(100.0 / kMaxHeight, | |
545 result.track_adapter_settings().min_aspect_ratio); | |
546 EXPECT_EQ(2000.0 / 500.0, result.track_adapter_settings().max_aspect_ratio); | |
547 CheckTrackAdapterSettingsEqualsFormat(result); | |
548 } | 441 } |
549 | 442 |
550 // Ideal outside the constrained set, closest to a single point. | 443 // Ideal outside the constrained set, closest to a single point. |
551 { | 444 { |
552 constraint_factory_.Reset(); | 445 constraint_factory_.Reset(); |
553 constraint_factory_.basic().height.setMin(500); | 446 constraint_factory_.basic().height.setMin(500); |
554 constraint_factory_.basic().height.setMax(1000); | 447 constraint_factory_.basic().height.setMax(1000); |
555 constraint_factory_.basic().width.setMin(500); | 448 constraint_factory_.basic().width.setMin(500); |
556 constraint_factory_.basic().width.setMax(1000); | 449 constraint_factory_.basic().width.setMax(1000); |
557 constraint_factory_.basic().aspectRatio.setMin(1.0); | 450 constraint_factory_.basic().aspectRatio.setMin(1.0); |
(...skipping 22 matching lines...) Expand all Loading... | |
580 CheckNonResolutionDefaults(result); | 473 CheckNonResolutionDefaults(result); |
581 EXPECT_EQ(static_cast<double>(kWidth) / kMaxScreenCastDimension, | 474 EXPECT_EQ(static_cast<double>(kWidth) / kMaxScreenCastDimension, |
582 result.track_adapter_settings().min_aspect_ratio); | 475 result.track_adapter_settings().min_aspect_ratio); |
583 EXPECT_EQ(static_cast<double>(kWidth) / kMinScreenCastDimension, | 476 EXPECT_EQ(static_cast<double>(kWidth) / kMinScreenCastDimension, |
584 result.track_adapter_settings().max_aspect_ratio); | 477 result.track_adapter_settings().max_aspect_ratio); |
585 CheckTrackAdapterSettingsEqualsFormat(result); | 478 CheckTrackAdapterSettingsEqualsFormat(result); |
586 } | 479 } |
587 | 480 |
588 TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryMinWidth) { | 481 TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryMinWidth) { |
589 constraint_factory_.Reset(); | 482 constraint_factory_.Reset(); |
590 const int kWidth = 1000; | 483 const int kWidth = 3000; |
591 constraint_factory_.basic().width.setMin(kWidth); | 484 constraint_factory_.basic().width.setMin(kWidth); |
592 auto result = SelectSettings(); | 485 auto result = SelectSettings(); |
593 EXPECT_TRUE(result.HasValue()); | 486 EXPECT_TRUE(result.HasValue()); |
594 // kWidth is greater that the default, so expect kWidth. | 487 // kWidth is greater that the default, so expect kWidth. |
595 EXPECT_EQ(kWidth, result.Width()); | 488 EXPECT_EQ(kWidth, result.Width()); |
596 EXPECT_EQ(std::round(kWidth / kDefaultScreenCastAspectRatio), | 489 EXPECT_EQ(std::round(kWidth / kDefaultScreenCastAspectRatio), |
597 result.Height()); | 490 result.Height()); |
598 CheckNonResolutionDefaults(result); | 491 CheckNonResolutionDefaults(result); |
599 EXPECT_EQ(static_cast<double>(kWidth) / kMaxScreenCastDimension, | 492 EXPECT_EQ(static_cast<double>(kWidth) / kMaxScreenCastDimension, |
600 result.track_adapter_settings().min_aspect_ratio); | 493 result.track_adapter_settings().min_aspect_ratio); |
(...skipping 13 matching lines...) Expand all Loading... | |
614 EXPECT_EQ(static_cast<double>(kSmallWidth) / kMaxScreenCastDimension, | 507 EXPECT_EQ(static_cast<double>(kSmallWidth) / kMaxScreenCastDimension, |
615 result.track_adapter_settings().min_aspect_ratio); | 508 result.track_adapter_settings().min_aspect_ratio); |
616 EXPECT_EQ( | 509 EXPECT_EQ( |
617 static_cast<double>(kMaxScreenCastDimension) / kMinScreenCastDimension, | 510 static_cast<double>(kMaxScreenCastDimension) / kMinScreenCastDimension, |
618 result.track_adapter_settings().max_aspect_ratio); | 511 result.track_adapter_settings().max_aspect_ratio); |
619 CheckTrackAdapterSettingsEqualsFormat(result); | 512 CheckTrackAdapterSettingsEqualsFormat(result); |
620 } | 513 } |
621 | 514 |
622 TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryMaxWidth) { | 515 TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryMaxWidth) { |
623 constraint_factory_.Reset(); | 516 constraint_factory_.Reset(); |
624 const int kWidth = 1000; | 517 const int kMaxWidth = 100; |
625 constraint_factory_.basic().width.setMax(kWidth); | 518 constraint_factory_.basic().width.setMax(kMaxWidth); |
626 auto result = SelectSettings(); | 519 auto result = SelectSettings(); |
627 EXPECT_TRUE(result.HasValue()); | 520 EXPECT_TRUE(result.HasValue()); |
628 // kWidth is greater that the default, so expect the default. | |
629 EXPECT_EQ(kDefaultScreenCastWidth, result.Width()); | |
630 EXPECT_EQ(kDefaultScreenCastHeight, result.Height()); | |
631 CheckNonResolutionDefaults(result); | |
632 EXPECT_EQ(1.0 / kMaxScreenCastDimension, | |
633 result.track_adapter_settings().min_aspect_ratio); | |
634 EXPECT_EQ(static_cast<double>(kWidth) / kMinScreenCastDimension, | |
635 result.track_adapter_settings().max_aspect_ratio); | |
636 CheckTrackAdapterSettingsEqualsFormat(result); | |
637 | |
638 const int kSmallWidth = 100; | |
639 constraint_factory_.basic().width.setMax(kSmallWidth); | |
640 result = SelectSettings(); | |
641 EXPECT_TRUE(result.HasValue()); | |
642 // kSmallWidth is less that the default, so expect kSmallWidth. | 521 // kSmallWidth is less that the default, so expect kSmallWidth. |
643 EXPECT_EQ(kSmallWidth, result.Width()); | 522 EXPECT_EQ(kMaxWidth, result.Width()); |
644 EXPECT_EQ(std::round(kSmallWidth / kDefaultScreenCastAspectRatio), | 523 EXPECT_EQ(std::round(kMaxWidth / kDefaultScreenCastAspectRatio), |
645 result.Height()); | 524 result.Height()); |
646 CheckNonResolutionDefaults(result); | 525 CheckNonResolutionDefaults(result); |
647 EXPECT_EQ(1.0 / kMaxScreenCastDimension, | 526 EXPECT_EQ(1.0 / kMaxScreenCastDimension, |
648 result.track_adapter_settings().min_aspect_ratio); | 527 result.track_adapter_settings().min_aspect_ratio); |
649 EXPECT_EQ(static_cast<double>(kSmallWidth) / kMinScreenCastDimension, | 528 EXPECT_EQ(static_cast<double>(kMaxWidth) / kMinScreenCastDimension, |
650 result.track_adapter_settings().max_aspect_ratio); | 529 result.track_adapter_settings().max_aspect_ratio); |
651 CheckTrackAdapterSettingsEqualsFormat(result); | 530 CheckTrackAdapterSettingsEqualsFormat(result); |
652 } | 531 } |
653 | 532 |
654 TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryWidthRange) { | 533 TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryWidthRange) { |
655 constraint_factory_.Reset(); | 534 constraint_factory_.Reset(); |
656 { | 535 const int kMinWidth = 300; |
657 const int kMinWidth = 300; | 536 const int kMaxWidth = 400; |
658 const int kMaxWidth = 1000; | 537 constraint_factory_.basic().width.setMin(kMinWidth); |
659 constraint_factory_.basic().width.setMin(kMinWidth); | 538 constraint_factory_.basic().width.setMax(kMaxWidth); |
660 constraint_factory_.basic().width.setMax(kMaxWidth); | 539 auto result = SelectSettings(); |
661 auto result = SelectSettings(); | 540 EXPECT_TRUE(result.HasValue()); |
662 EXPECT_TRUE(result.HasValue()); | 541 // The whole range is less than the default, so expect the range maximum. |
663 // The range includes the default, so expect the default. | 542 EXPECT_EQ(kMaxWidth, result.Width()); |
664 EXPECT_EQ(kDefaultScreenCastWidth, result.Width()); | 543 EXPECT_EQ(std::round(kMaxWidth / kDefaultScreenCastAspectRatio), |
665 EXPECT_EQ(kDefaultScreenCastHeight, result.Height()); | 544 result.Height()); |
666 CheckNonResolutionDefaults(result); | 545 CheckNonResolutionDefaults(result); |
667 EXPECT_EQ(static_cast<double>(kMinWidth) / kMaxScreenCastDimension, | 546 EXPECT_EQ(static_cast<double>(kMinWidth) / kMaxScreenCastDimension, |
668 result.track_adapter_settings().min_aspect_ratio); | 547 result.track_adapter_settings().min_aspect_ratio); |
669 EXPECT_EQ(static_cast<double>(kMaxWidth) / kMinScreenCastDimension, | 548 EXPECT_EQ(static_cast<double>(kMaxWidth) / kMinScreenCastDimension, |
670 result.track_adapter_settings().max_aspect_ratio); | 549 result.track_adapter_settings().max_aspect_ratio); |
671 CheckTrackAdapterSettingsEqualsFormat(result); | 550 CheckTrackAdapterSettingsEqualsFormat(result); |
672 } | |
673 | |
674 { | |
675 const int kMinWidth = 900; | |
676 const int kMaxWidth = 1000; | |
677 constraint_factory_.basic().width.setMin(kMinWidth); | |
678 constraint_factory_.basic().width.setMax(kMaxWidth); | |
679 auto result = SelectSettings(); | |
680 EXPECT_TRUE(result.HasValue()); | |
681 // The whole range is greater than the default, so expect the range minimum. | |
682 EXPECT_EQ(kMinWidth, result.Width()); | |
683 EXPECT_EQ(std::round(kMinWidth / kDefaultScreenCastAspectRatio), | |
684 result.Height()); | |
685 CheckNonResolutionDefaults(result); | |
686 EXPECT_EQ(static_cast<double>(kMinWidth) / kMaxScreenCastDimension, | |
687 result.track_adapter_settings().min_aspect_ratio); | |
688 EXPECT_EQ(static_cast<double>(kMaxWidth) / kMinScreenCastDimension, | |
689 result.track_adapter_settings().max_aspect_ratio); | |
690 CheckTrackAdapterSettingsEqualsFormat(result); | |
691 } | |
692 | |
693 { | |
694 const int kMinWidth = 300; | |
695 const int kMaxWidth = 400; | |
696 constraint_factory_.basic().width.setMin(kMinWidth); | |
697 constraint_factory_.basic().width.setMax(kMaxWidth); | |
698 auto result = SelectSettings(); | |
699 EXPECT_TRUE(result.HasValue()); | |
700 // The whole range is less than the default, so expect the range maximum. | |
701 EXPECT_EQ(kMaxWidth, result.Width()); | |
702 EXPECT_EQ(std::round(kMaxWidth / kDefaultScreenCastAspectRatio), | |
703 result.Height()); | |
704 CheckNonResolutionDefaults(result); | |
705 EXPECT_EQ(static_cast<double>(kMinWidth) / kMaxScreenCastDimension, | |
706 result.track_adapter_settings().min_aspect_ratio); | |
707 EXPECT_EQ(static_cast<double>(kMaxWidth) / kMinScreenCastDimension, | |
708 result.track_adapter_settings().max_aspect_ratio); | |
709 CheckTrackAdapterSettingsEqualsFormat(result); | |
710 } | |
711 } | 551 } |
712 | 552 |
713 TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealWidth) { | 553 TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealWidth) { |
714 // Unconstrained | 554 // Unconstrained |
715 { | 555 { |
716 constraint_factory_.Reset(); | 556 constraint_factory_.Reset(); |
717 const int kIdealWidth = 1000; | 557 const int kIdealWidth = 1000; |
718 constraint_factory_.basic().width.setIdeal(kIdealWidth); | 558 constraint_factory_.basic().width.setIdeal(kIdealWidth); |
719 auto result = SelectSettings(); | 559 auto result = SelectSettings(); |
720 EXPECT_TRUE(result.HasValue()); | 560 EXPECT_TRUE(result.HasValue()); |
721 EXPECT_EQ(kIdealWidth, result.Width()); | 561 EXPECT_EQ(kIdealWidth, result.Width()); |
722 // When ideal width is given, the algorithm returns a height that is closest | 562 // When ideal width is given, the algorithm returns a height that is closest |
723 // to width / kDefaultAspectRatio. | 563 // to width / kDefaultScreenCastAspectRatio. |
724 EXPECT_EQ(std::round(kIdealWidth / kDefaultScreenCastAspectRatio), | 564 EXPECT_EQ(std::round(kIdealWidth / kDefaultScreenCastAspectRatio), |
725 result.Height()); | 565 result.Height()); |
726 CheckNonResolutionDefaults(result); | 566 CheckNonResolutionDefaults(result); |
727 CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result); | 567 CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result); |
728 } | 568 } |
729 | 569 |
730 // Ideal greater than maximum. | 570 // Ideal greater than maximum. |
731 { | 571 { |
732 constraint_factory_.Reset(); | 572 constraint_factory_.Reset(); |
733 const int kIdealWidth = 1000; | 573 const int kIdealWidth = 1000; |
734 const int kMaxWidth = 800; | 574 const int kMaxWidth = 800; |
735 constraint_factory_.basic().width.setIdeal(kIdealWidth); | 575 constraint_factory_.basic().width.setIdeal(kIdealWidth); |
736 constraint_factory_.basic().width.setMax(kMaxWidth); | 576 constraint_factory_.basic().width.setMax(kMaxWidth); |
737 auto result = SelectSettings(); | 577 auto result = SelectSettings(); |
738 EXPECT_TRUE(result.HasValue()); | 578 EXPECT_TRUE(result.HasValue()); |
739 EXPECT_EQ(kMaxWidth, result.Width()); | 579 EXPECT_EQ(kMaxWidth, result.Width()); |
740 // Expect closest to kMaxWidth / kDefaultAspectRatio. | 580 // Expect closest to kMaxWidth / kDefaultScreenCastAspectRatio. |
741 EXPECT_EQ(std::round(kMaxWidth / kDefaultScreenCastAspectRatio), | 581 EXPECT_EQ(std::round(kMaxWidth / kDefaultScreenCastAspectRatio), |
742 result.Height()); | 582 result.Height()); |
743 CheckNonResolutionDefaults(result); | 583 CheckNonResolutionDefaults(result); |
744 EXPECT_EQ(1.0 / kMaxScreenCastDimension, | 584 EXPECT_EQ(1.0 / kMaxScreenCastDimension, |
745 result.track_adapter_settings().min_aspect_ratio); | 585 result.track_adapter_settings().min_aspect_ratio); |
746 EXPECT_EQ(static_cast<double>(kMaxWidth) / kMinScreenCastDimension, | 586 EXPECT_EQ(static_cast<double>(kMaxWidth) / kMinScreenCastDimension, |
747 result.track_adapter_settings().max_aspect_ratio); | 587 result.track_adapter_settings().max_aspect_ratio); |
748 CheckTrackAdapterSettingsEqualsFormat(result); | 588 CheckTrackAdapterSettingsEqualsFormat(result); |
749 } | 589 } |
750 | 590 |
751 // Ideal less than minimum. | 591 // Ideal less than minimum. |
752 { | 592 { |
753 constraint_factory_.Reset(); | 593 constraint_factory_.Reset(); |
754 const int kIdealWidth = 1000; | 594 const int kIdealWidth = 1000; |
755 const int kMinWidth = 1200; | 595 const int kMinWidth = 1200; |
756 constraint_factory_.basic().width.setIdeal(kIdealWidth); | 596 constraint_factory_.basic().width.setIdeal(kIdealWidth); |
757 constraint_factory_.basic().width.setMin(kMinWidth); | 597 constraint_factory_.basic().width.setMin(kMinWidth); |
758 auto result = SelectSettings(); | 598 auto result = SelectSettings(); |
759 EXPECT_TRUE(result.HasValue()); | 599 EXPECT_TRUE(result.HasValue()); |
760 EXPECT_EQ(kMinWidth, result.Width()); | 600 EXPECT_EQ(kMinWidth, result.Width()); |
761 // Expect closest to kMinWidth / kDefaultAspectRatio. | 601 // Expect closest to kMinWidth / kDefaultScreenCastAspectRatio. |
762 EXPECT_EQ(std::round(kMinWidth / kDefaultScreenCastAspectRatio), | 602 EXPECT_EQ(std::round(kMinWidth / kDefaultScreenCastAspectRatio), |
763 result.Height()); | 603 result.Height()); |
764 CheckNonResolutionDefaults(result); | 604 CheckNonResolutionDefaults(result); |
765 EXPECT_EQ(static_cast<double>(kMinWidth) / kMaxScreenCastDimension, | 605 EXPECT_EQ(static_cast<double>(kMinWidth) / kMaxScreenCastDimension, |
766 result.track_adapter_settings().min_aspect_ratio); | 606 result.track_adapter_settings().min_aspect_ratio); |
767 EXPECT_EQ( | 607 EXPECT_EQ( |
768 static_cast<double>(kMaxScreenCastDimension) / kMinScreenCastDimension, | 608 static_cast<double>(kMaxScreenCastDimension) / kMinScreenCastDimension, |
769 result.track_adapter_settings().max_aspect_ratio); | 609 result.track_adapter_settings().max_aspect_ratio); |
770 CheckTrackAdapterSettingsEqualsFormat(result); | 610 CheckTrackAdapterSettingsEqualsFormat(result); |
771 } | 611 } |
772 | 612 |
773 // Ideal intersects a box. | 613 // Ideal intersects a box. |
774 { | 614 { |
775 constraint_factory_.Reset(); | 615 constraint_factory_.Reset(); |
776 constraint_factory_.basic().width.setMin(500); | 616 constraint_factory_.basic().width.setMin(500); |
777 constraint_factory_.basic().width.setMax(1000); | 617 constraint_factory_.basic().width.setMax(1000); |
778 constraint_factory_.basic().height.setMin(100); | 618 constraint_factory_.basic().height.setMin(100); |
779 constraint_factory_.basic().height.setMax(500); | 619 constraint_factory_.basic().height.setMax(500); |
780 const int kIdealWidth = 750; | 620 const int kIdealWidth = 750; |
781 constraint_factory_.basic().width.setIdeal(kIdealWidth); | 621 constraint_factory_.basic().width.setIdeal(kIdealWidth); |
782 auto result = SelectSettings(); | 622 auto result = SelectSettings(); |
783 EXPECT_TRUE(result.HasValue()); | 623 EXPECT_TRUE(result.HasValue()); |
784 // Ideal width is included in the bounding box. | 624 // Ideal width is included in the bounding box. |
785 EXPECT_EQ(kIdealWidth, result.Width()); | 625 EXPECT_EQ(kIdealWidth, result.Width()); |
786 // Expect height closest to kIdealWidth / kDefaultAspectRatio, which is | 626 // Expect height closest to kIdealWidth / default aspect ratio. |
787 // outside the box. Closest is max height. | 627 double default_aspect_ratio = |
788 EXPECT_EQ(constraint_factory_.basic().height.max(), result.Height()); | 628 static_cast<double>(constraint_factory_.basic().width.max()) / |
629 constraint_factory_.basic().height.max(); | |
630 EXPECT_EQ(std::round(kIdealWidth / default_aspect_ratio), result.Height()); | |
789 CheckNonResolutionDefaults(result); | 631 CheckNonResolutionDefaults(result); |
790 EXPECT_EQ(500.0 / 500.0, result.track_adapter_settings().min_aspect_ratio); | 632 EXPECT_EQ(500.0 / 500.0, result.track_adapter_settings().min_aspect_ratio); |
791 EXPECT_EQ(1000.0 / 100.0, result.track_adapter_settings().max_aspect_ratio); | 633 EXPECT_EQ(1000.0 / 100.0, result.track_adapter_settings().max_aspect_ratio); |
792 CheckTrackAdapterSettingsEqualsFormat(result); | |
793 | |
794 constraint_factory_.basic().height.setMin(1200); | |
795 constraint_factory_.basic().height.setMax(2000); | |
796 result = SelectSettings(); | |
797 EXPECT_TRUE(result.HasValue()); | |
798 EXPECT_EQ(kIdealWidth, result.Width()); | |
799 // kIdealWidth / kDefaultAspectRatio outside the box. Closest is | |
800 // min height. | |
801 EXPECT_EQ(constraint_factory_.basic().height.min(), result.Height()); | |
802 CheckNonResolutionDefaults(result); | |
803 EXPECT_EQ(500.0 / 2000.0, result.track_adapter_settings().min_aspect_ratio); | |
804 EXPECT_EQ(1000.0 / 1200.0, | |
805 result.track_adapter_settings().max_aspect_ratio); | |
806 CheckTrackAdapterSettingsEqualsFormat(result); | |
807 | |
808 constraint_factory_.basic().height.setMin(100); | |
809 constraint_factory_.basic().height.setMax(500); | |
810 result = SelectSettings(); | |
811 EXPECT_TRUE(result.HasValue()); | |
812 EXPECT_EQ(kIdealWidth, result.Width()); | |
813 // kIdealWidth / kDefaultAspectRatio is outside the box. Closest is max | |
814 // height. | |
815 EXPECT_EQ(constraint_factory_.basic().height.max(), result.Height()); | |
816 CheckNonResolutionDefaults(result); | |
817 EXPECT_EQ(500.0 / 500.0, result.track_adapter_settings().min_aspect_ratio); | |
818 EXPECT_EQ(1000.0 / 100.0, result.track_adapter_settings().max_aspect_ratio); | |
819 CheckTrackAdapterSettingsEqualsFormat(result); | 634 CheckTrackAdapterSettingsEqualsFormat(result); |
820 } | 635 } |
821 | 636 |
822 // Ideal outside the box, closest to the side coinciding with max width. | 637 // Ideal outside the box, closest to the side coinciding with max width. |
823 { | 638 { |
824 const int kMaxWidth = 1000; | 639 const int kMaxWidth = 1000; |
825 constraint_factory_.Reset(); | 640 constraint_factory_.Reset(); |
826 constraint_factory_.basic().width.setMin(500); | 641 constraint_factory_.basic().width.setMin(500); |
827 constraint_factory_.basic().width.setMax(kMaxWidth); | 642 constraint_factory_.basic().width.setMax(kMaxWidth); |
828 constraint_factory_.basic().height.setMin(100); | 643 constraint_factory_.basic().height.setMin(100); |
829 constraint_factory_.basic().height.setMax(500); | 644 constraint_factory_.basic().height.setMax(500); |
830 constraint_factory_.basic().width.setIdeal(1200); | 645 constraint_factory_.basic().width.setIdeal(1200); |
831 auto result = SelectSettings(); | 646 auto result = SelectSettings(); |
832 EXPECT_TRUE(result.HasValue()); | 647 EXPECT_TRUE(result.HasValue()); |
833 EXPECT_EQ(kMaxWidth, result.Width()); | 648 EXPECT_EQ(kMaxWidth, result.Width()); |
834 // kMaxWidth / kDefaultAspectRatio is outside the box. Closest is max | 649 // kMaxWidth / kDefaultScreenCastAspectRatio is outside the box. Closest is |
835 // height. | 650 // max height. |
836 EXPECT_EQ(constraint_factory_.basic().height.max(), result.Height()); | 651 EXPECT_EQ(constraint_factory_.basic().height.max(), result.Height()); |
837 CheckNonResolutionDefaults(result); | 652 CheckNonResolutionDefaults(result); |
838 EXPECT_EQ(500.0 / 500.0, result.track_adapter_settings().min_aspect_ratio); | 653 EXPECT_EQ(500.0 / 500.0, result.track_adapter_settings().min_aspect_ratio); |
839 EXPECT_EQ(static_cast<double>(kMaxWidth) / 100.0, | 654 EXPECT_EQ(static_cast<double>(kMaxWidth) / 100.0, |
840 result.track_adapter_settings().max_aspect_ratio); | 655 result.track_adapter_settings().max_aspect_ratio); |
841 CheckTrackAdapterSettingsEqualsFormat(result); | 656 CheckTrackAdapterSettingsEqualsFormat(result); |
842 | |
843 constraint_factory_.basic().height.setMin(1500); | |
844 constraint_factory_.basic().height.setMax(2000); | |
845 result = SelectSettings(); | |
846 EXPECT_TRUE(result.HasValue()); | |
847 EXPECT_EQ(kMaxWidth, result.Width()); | |
848 // kMaxWidth / kDefaultAspectRatio is outside the box. Closest is | |
849 // min height. | |
850 EXPECT_EQ(constraint_factory_.basic().height.min(), result.Height()); | |
851 CheckNonResolutionDefaults(result); | |
852 EXPECT_EQ(500.0 / 2000.0, result.track_adapter_settings().min_aspect_ratio); | |
853 EXPECT_EQ(static_cast<double>(kMaxWidth) / 1500.0, | |
854 result.track_adapter_settings().max_aspect_ratio); | |
855 CheckTrackAdapterSettingsEqualsFormat(result); | |
856 | |
857 constraint_factory_.basic().height.setMin(100); | |
858 result = SelectSettings(); | |
859 EXPECT_TRUE(result.HasValue()); | |
860 EXPECT_EQ(kMaxWidth, result.Width()); | |
861 // kMaxWidth / kDefaultAspectRatio is within the height limits. | |
862 EXPECT_EQ(std::round(kMaxWidth / kDefaultScreenCastAspectRatio), | |
863 result.Height()); | |
864 CheckNonResolutionDefaults(result); | |
865 EXPECT_EQ(500.0 / 2000.0, result.track_adapter_settings().min_aspect_ratio); | |
866 EXPECT_EQ(static_cast<double>(kMaxWidth) / 100.0, | |
867 result.track_adapter_settings().max_aspect_ratio); | |
868 CheckTrackAdapterSettingsEqualsFormat(result); | |
869 } | 657 } |
870 | 658 |
871 // Ideal outside the constrained set, closest to a single point. | 659 // Ideal outside the constrained set, closest to a single point. |
872 { | 660 { |
873 constraint_factory_.Reset(); | 661 constraint_factory_.Reset(); |
874 constraint_factory_.basic().width.setMin(100); | 662 constraint_factory_.basic().width.setMin(100); |
875 constraint_factory_.basic().width.setMax(500); | 663 constraint_factory_.basic().width.setMax(500); |
876 constraint_factory_.basic().height.setMin(100); | 664 constraint_factory_.basic().height.setMin(100); |
877 constraint_factory_.basic().height.setMax(500); | 665 constraint_factory_.basic().height.setMax(500); |
878 constraint_factory_.basic().aspectRatio.setMax(1.0); | 666 constraint_factory_.basic().aspectRatio.setMax(1.0); |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1051 | 839 |
1052 // Ideal greater than maximum. | 840 // Ideal greater than maximum. |
1053 { | 841 { |
1054 constraint_factory_.Reset(); | 842 constraint_factory_.Reset(); |
1055 const double kIdealAspectRatio = 2.0; | 843 const double kIdealAspectRatio = 2.0; |
1056 const double kMaxAspectRatio = 1.5; | 844 const double kMaxAspectRatio = 1.5; |
1057 constraint_factory_.basic().aspectRatio.setIdeal(kIdealAspectRatio); | 845 constraint_factory_.basic().aspectRatio.setIdeal(kIdealAspectRatio); |
1058 constraint_factory_.basic().aspectRatio.setMax(kMaxAspectRatio); | 846 constraint_factory_.basic().aspectRatio.setMax(kMaxAspectRatio); |
1059 auto result = SelectSettings(); | 847 auto result = SelectSettings(); |
1060 EXPECT_TRUE(result.HasValue()); | 848 EXPECT_TRUE(result.HasValue()); |
1061 // Ideal height is greater than the maximum, expect maximum. | 849 // Ideal aspect ratio is greater than the maximum, expect maximum. |
1062 EXPECT_EQ(kDefaultScreenCastHeight, result.Height()); | 850 EXPECT_EQ(std::round(kDefaultScreenCastWidth / kMaxAspectRatio), |
1063 EXPECT_EQ(std::round(kDefaultScreenCastHeight * kMaxAspectRatio), | 851 result.Height()); |
1064 result.Width()); | 852 EXPECT_EQ(kDefaultScreenCastWidth, result.Width()); |
1065 CheckNonResolutionDefaults(result); | 853 CheckNonResolutionDefaults(result); |
1066 EXPECT_EQ( | 854 EXPECT_EQ( |
1067 static_cast<double>(kMinScreenCastDimension) / kMaxScreenCastDimension, | 855 static_cast<double>(kMinScreenCastDimension) / kMaxScreenCastDimension, |
1068 result.track_adapter_settings().min_aspect_ratio); | 856 result.track_adapter_settings().min_aspect_ratio); |
1069 EXPECT_EQ(kMaxAspectRatio, | 857 EXPECT_EQ(kMaxAspectRatio, |
1070 result.track_adapter_settings().max_aspect_ratio); | 858 result.track_adapter_settings().max_aspect_ratio); |
1071 CheckTrackAdapterSettingsEqualsFormat(result); | 859 CheckTrackAdapterSettingsEqualsFormat(result); |
1072 } | 860 } |
1073 | 861 |
1074 // Ideal less than minimum. | 862 // Ideal less than minimum. |
1075 { | 863 { |
1076 constraint_factory_.Reset(); | 864 constraint_factory_.Reset(); |
1077 const double kIdealAspectRatio = 1.0; | 865 const double kIdealAspectRatio = 1.0; |
1078 const double kMinAspectRatio = 1.5; | 866 const double kMinAspectRatio = 1.5; |
1079 constraint_factory_.basic().aspectRatio.setIdeal(kIdealAspectRatio); | 867 constraint_factory_.basic().aspectRatio.setIdeal(kIdealAspectRatio); |
1080 constraint_factory_.basic().aspectRatio.setMin(kMinAspectRatio); | 868 constraint_factory_.basic().aspectRatio.setMin(kMinAspectRatio); |
1081 auto result = SelectSettings(); | 869 auto result = SelectSettings(); |
1082 EXPECT_TRUE(result.HasValue()); | 870 EXPECT_TRUE(result.HasValue()); |
1083 // Ideal height is greater than the maximum, expect maximum. | 871 // Ideal aspect ratio is less than the maximum, expect minimum. |
1084 EXPECT_EQ(kDefaultScreenCastHeight, result.Height()); | 872 EXPECT_EQ(std::round(kDefaultScreenCastWidth / kMinAspectRatio), |
1085 EXPECT_EQ(std::round(kDefaultScreenCastHeight * kMinAspectRatio), | 873 result.Height()); |
1086 result.Width()); | 874 EXPECT_EQ(kDefaultScreenCastWidth, result.Width()); |
1087 CheckNonResolutionDefaults(result); | 875 CheckNonResolutionDefaults(result); |
1088 EXPECT_EQ(kMinAspectRatio, | 876 EXPECT_EQ(kMinAspectRatio, |
1089 result.track_adapter_settings().min_aspect_ratio); | 877 result.track_adapter_settings().min_aspect_ratio); |
1090 EXPECT_EQ( | 878 EXPECT_EQ( |
1091 static_cast<double>(kMaxScreenCastDimension) / kMinScreenCastDimension, | 879 static_cast<double>(kMaxScreenCastDimension) / kMinScreenCastDimension, |
1092 result.track_adapter_settings().max_aspect_ratio); | 880 result.track_adapter_settings().max_aspect_ratio); |
1093 CheckTrackAdapterSettingsEqualsFormat(result); | 881 CheckTrackAdapterSettingsEqualsFormat(result); |
1094 } | 882 } |
1095 | 883 |
1096 // Ideal intersects a box. | 884 // Ideal intersects a box. |
(...skipping 18 matching lines...) Expand all Loading... | |
1115 EXPECT_EQ(100.0 / 500.0, result.track_adapter_settings().min_aspect_ratio); | 903 EXPECT_EQ(100.0 / 500.0, result.track_adapter_settings().min_aspect_ratio); |
1116 EXPECT_EQ(500.0 / 100.0, result.track_adapter_settings().max_aspect_ratio); | 904 EXPECT_EQ(500.0 / 100.0, result.track_adapter_settings().max_aspect_ratio); |
1117 CheckTrackAdapterSettingsEqualsFormat(result); | 905 CheckTrackAdapterSettingsEqualsFormat(result); |
1118 | 906 |
1119 constraint_factory_.basic().height.setMin(1000); | 907 constraint_factory_.basic().height.setMin(1000); |
1120 constraint_factory_.basic().height.setMax(5000); | 908 constraint_factory_.basic().height.setMax(5000); |
1121 constraint_factory_.basic().width.setMin(1000); | 909 constraint_factory_.basic().width.setMin(1000); |
1122 constraint_factory_.basic().width.setMax(5000); | 910 constraint_factory_.basic().width.setMax(5000); |
1123 result = SelectSettings(); | 911 result = SelectSettings(); |
1124 EXPECT_TRUE(result.HasValue()); | 912 EXPECT_TRUE(result.HasValue()); |
1125 // Ideal aspect-ratio is included in the bounding box, with the value | 913 // Ideal aspect-ratio is included in the bounding box. |
1126 // closest to a standard width or height and largest area being the cut with | 914 EXPECT_EQ( |
1127 // the minimum height. | 915 std::round(constraint_factory_.basic().width.max() / kIdealAspectRatio), |
1128 EXPECT_EQ(constraint_factory_.basic().height.min(), result.Height()); | 916 result.Height()); |
1129 EXPECT_EQ(std::round(constraint_factory_.basic().height.min() * | 917 EXPECT_EQ(constraint_factory_.basic().width.max(), result.Width()); |
1130 kIdealAspectRatio), | |
1131 result.Width()); | |
1132 CheckNonResolutionDefaults(result); | 918 CheckNonResolutionDefaults(result); |
1133 EXPECT_EQ(1000.0 / 5000.0, | 919 EXPECT_EQ(1000.0 / 5000.0, |
1134 result.track_adapter_settings().min_aspect_ratio); | 920 result.track_adapter_settings().min_aspect_ratio); |
1135 EXPECT_EQ(5000.0 / 1000.0, | 921 EXPECT_EQ(5000.0 / 1000.0, |
1136 result.track_adapter_settings().max_aspect_ratio); | 922 result.track_adapter_settings().max_aspect_ratio); |
1137 CheckTrackAdapterSettingsEqualsFormat(result); | 923 CheckTrackAdapterSettingsEqualsFormat(result); |
1138 | 924 |
925 constraint_factory_.Reset(); | |
926 constraint_factory_.basic().aspectRatio.setIdeal(kIdealAspectRatio); | |
1139 constraint_factory_.basic().height.setMin(250); | 927 constraint_factory_.basic().height.setMin(250); |
1140 constraint_factory_.basic().height.setMax(5000); | |
1141 constraint_factory_.basic().width.setMin(250); | 928 constraint_factory_.basic().width.setMin(250); |
1142 constraint_factory_.basic().width.setMax(5000); | |
1143 result = SelectSettings(); | 929 result = SelectSettings(); |
1144 EXPECT_TRUE(result.HasValue()); | 930 EXPECT_TRUE(result.HasValue()); |
1145 // Ideal aspect-ratio and default width and height are included in the | 931 // Ideal aspect-ratio is included in the bounding box. Preserving default |
1146 // bounding box. Preserving default height leads to larger area than | 932 // height leads to larger area than preserving default width. |
1147 // preserving default width. | |
1148 EXPECT_EQ(kDefaultScreenCastHeight, result.Height()); | 933 EXPECT_EQ(kDefaultScreenCastHeight, result.Height()); |
1149 EXPECT_EQ(kDefaultScreenCastHeight * kIdealAspectRatio, result.Width()); | 934 EXPECT_EQ(kDefaultScreenCastHeight * kIdealAspectRatio, result.Width()); |
1150 CheckNonResolutionDefaults(result); | 935 CheckNonResolutionDefaults(result); |
1151 EXPECT_EQ(250.0 / 5000.0, result.track_adapter_settings().min_aspect_ratio); | 936 EXPECT_EQ(250.0 / kMaxScreenCastDimension, |
1152 EXPECT_EQ(5000.0 / 250.0, result.track_adapter_settings().max_aspect_ratio); | 937 result.track_adapter_settings().min_aspect_ratio); |
938 EXPECT_EQ(kMaxScreenCastDimension / 250.0, | |
939 result.track_adapter_settings().max_aspect_ratio); | |
1153 CheckTrackAdapterSettingsEqualsFormat(result); | 940 CheckTrackAdapterSettingsEqualsFormat(result); |
1154 } | 941 } |
1155 | 942 |
1156 // Ideal outside the constrained area, closest to min or max aspect ratio. | 943 // Ideal outside the constrained area, closest to min or max aspect ratio. |
1157 { | 944 { |
1158 const double kMinAspectRatio = 0.5; | 945 const double kMinAspectRatio = 0.5; |
1159 const double kMaxAspectRatio = 2.0; | 946 const double kMaxAspectRatio = 2.0; |
1160 constraint_factory_.Reset(); | 947 constraint_factory_.Reset(); |
1161 constraint_factory_.basic().height.setMin(100); | 948 constraint_factory_.basic().height.setMin(100); |
1162 constraint_factory_.basic().height.setMax(500); | 949 constraint_factory_.basic().height.setMax(500); |
(...skipping 26 matching lines...) Expand all Loading... | |
1189 result.Width()); | 976 result.Width()); |
1190 CheckNonResolutionDefaults(result); | 977 CheckNonResolutionDefaults(result); |
1191 EXPECT_EQ(kMinAspectRatio, | 978 EXPECT_EQ(kMinAspectRatio, |
1192 result.track_adapter_settings().min_aspect_ratio); | 979 result.track_adapter_settings().min_aspect_ratio); |
1193 EXPECT_EQ(kMaxAspectRatio, | 980 EXPECT_EQ(kMaxAspectRatio, |
1194 result.track_adapter_settings().max_aspect_ratio); | 981 result.track_adapter_settings().max_aspect_ratio); |
1195 CheckTrackAdapterSettingsEqualsFormat(result); | 982 CheckTrackAdapterSettingsEqualsFormat(result); |
1196 | 983 |
1197 // Use a box that is bigger and further from the origin to force closeness | 984 // Use a box that is bigger and further from the origin to force closeness |
1198 // to a different default dimension. | 985 // to a different default dimension. |
1199 constraint_factory_.basic().height.setMin(1000); | 986 constraint_factory_.Reset(); |
1200 constraint_factory_.basic().height.setMax(5000); | 987 constraint_factory_.basic().aspectRatio.setMin(kMinAspectRatio); |
1201 constraint_factory_.basic().width.setMin(1000); | 988 constraint_factory_.basic().aspectRatio.setMax(kMaxAspectRatio); |
1202 constraint_factory_.basic().width.setMax(5000); | 989 constraint_factory_.basic().height.setMin(3000); |
990 constraint_factory_.basic().width.setMin(3000); | |
1203 constraint_factory_.basic().aspectRatio.setIdeal(3.0); | 991 constraint_factory_.basic().aspectRatio.setIdeal(3.0); |
1204 result = SelectSettings(); | 992 result = SelectSettings(); |
1205 EXPECT_TRUE(result.HasValue()); | 993 EXPECT_TRUE(result.HasValue()); |
1206 // Ideal is closest to kMaxAspectRatio. | 994 // Ideal is closest to kMaxAspectRatio. |
1207 EXPECT_EQ(constraint_factory_.basic().height.min(), result.Height()); | 995 EXPECT_EQ(constraint_factory_.basic().height.min(), result.Height()); |
1208 EXPECT_EQ( | 996 EXPECT_EQ( |
1209 std::round(constraint_factory_.basic().height.min() * kMaxAspectRatio), | 997 std::round(constraint_factory_.basic().height.min() * kMaxAspectRatio), |
1210 result.Width()); | 998 result.Width()); |
1211 CheckNonResolutionDefaults(result); | 999 CheckNonResolutionDefaults(result); |
1212 EXPECT_EQ(kMinAspectRatio, | 1000 EXPECT_EQ(kMinAspectRatio, |
(...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1593 } | 1381 } |
1594 | 1382 |
1595 TEST_F(MediaStreamConstraintsUtilVideoContentTest, AdvancedNoiseReduction) { | 1383 TEST_F(MediaStreamConstraintsUtilVideoContentTest, AdvancedNoiseReduction) { |
1596 constraint_factory_.Reset(); | 1384 constraint_factory_.Reset(); |
1597 blink::WebMediaTrackConstraintSet& advanced1 = | 1385 blink::WebMediaTrackConstraintSet& advanced1 = |
1598 constraint_factory_.AddAdvanced(); | 1386 constraint_factory_.AddAdvanced(); |
1599 advanced1.width.setMin(640); | 1387 advanced1.width.setMin(640); |
1600 advanced1.height.setMin(480); | 1388 advanced1.height.setMin(480); |
1601 blink::WebMediaTrackConstraintSet& advanced2 = | 1389 blink::WebMediaTrackConstraintSet& advanced2 = |
1602 constraint_factory_.AddAdvanced(); | 1390 constraint_factory_.AddAdvanced(); |
1603 advanced2.width.setMin(1920); | 1391 const int kMinWidth = 4000; |
1604 advanced2.height.setMin(1080); | 1392 const int kMinHeight = 2000; |
1393 advanced2.width.setMin(kMinWidth); | |
1394 advanced2.height.setMin(kMinHeight); | |
1605 advanced2.googNoiseReduction.setExact(false); | 1395 advanced2.googNoiseReduction.setExact(false); |
1606 auto result = SelectSettings(); | 1396 auto result = SelectSettings(); |
1607 EXPECT_TRUE(result.HasValue()); | 1397 EXPECT_TRUE(result.HasValue()); |
1608 EXPECT_EQ(1920, result.Width()); | 1398 EXPECT_EQ(kMinWidth, result.Width()); |
1609 // Preserves default aspect ratio. | 1399 // Preserves default aspect ratio. |
1610 EXPECT_EQ(static_cast<int>( | 1400 EXPECT_EQ(static_cast<int>( |
1611 std::round(result.Width() / kDefaultScreenCastAspectRatio)), | 1401 std::round(result.Width() / kDefaultScreenCastAspectRatio)), |
1612 result.Height()); | 1402 result.Height()); |
1613 EXPECT_TRUE(result.noise_reduction() && !*result.noise_reduction()); | 1403 EXPECT_TRUE(result.noise_reduction() && !*result.noise_reduction()); |
1614 EXPECT_EQ(1920.0 / static_cast<double>(kMaxScreenCastDimension), | 1404 EXPECT_EQ(kMinWidth / static_cast<double>(kMaxScreenCastDimension), |
1615 result.track_adapter_settings().min_aspect_ratio); | 1405 result.track_adapter_settings().min_aspect_ratio); |
1616 EXPECT_EQ(static_cast<double>(kMaxScreenCastDimension) / 1080.0, | 1406 EXPECT_EQ(static_cast<double>(kMaxScreenCastDimension) / kMinHeight, |
1617 result.track_adapter_settings().max_aspect_ratio); | 1407 result.track_adapter_settings().max_aspect_ratio); |
1618 CheckTrackAdapterSettingsEqualsFormat(result); | 1408 CheckTrackAdapterSettingsEqualsFormat(result); |
1619 } | 1409 } |
1620 | 1410 |
1621 // The "AdvancedContradictory" tests check that advanced constraint sets that | 1411 // The "AdvancedContradictory" tests check that advanced constraint sets that |
1622 // contradict previous constraint sets are ignored. | 1412 // contradict previous constraint sets are ignored. |
1623 TEST_F(MediaStreamConstraintsUtilVideoContentTest, | 1413 TEST_F(MediaStreamConstraintsUtilVideoContentTest, |
1624 AdvancedContradictoryNoiseReduction) { | 1414 AdvancedContradictoryNoiseReduction) { |
1625 constraint_factory_.Reset(); | 1415 constraint_factory_.Reset(); |
1626 blink::WebMediaTrackConstraintSet& advanced1 = | 1416 blink::WebMediaTrackConstraintSet& advanced1 = |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1684 EXPECT_EQ(kDefaultScreenCastFrameRate, result.FrameRate()); | 1474 EXPECT_EQ(kDefaultScreenCastFrameRate, result.FrameRate()); |
1685 EXPECT_EQ(kMinScreenCastDimension / 480.0, | 1475 EXPECT_EQ(kMinScreenCastDimension / 480.0, |
1686 result.track_adapter_settings().min_aspect_ratio); | 1476 result.track_adapter_settings().min_aspect_ratio); |
1687 EXPECT_EQ(640.0 / kMinScreenCastDimension, | 1477 EXPECT_EQ(640.0 / kMinScreenCastDimension, |
1688 result.track_adapter_settings().max_aspect_ratio); | 1478 result.track_adapter_settings().max_aspect_ratio); |
1689 CheckTrackAdapterSettingsEqualsFormat(result); | 1479 CheckTrackAdapterSettingsEqualsFormat(result); |
1690 } | 1480 } |
1691 | 1481 |
1692 TEST_F(MediaStreamConstraintsUtilVideoContentTest, | 1482 TEST_F(MediaStreamConstraintsUtilVideoContentTest, |
1693 AdvancedContradictoryMinMaxResolutionFrameRate) { | 1483 AdvancedContradictoryMinMaxResolutionFrameRate) { |
1484 const int kMinHeight = 2600; | |
1485 const int kMinWidth = 2800; | |
1694 constraint_factory_.Reset(); | 1486 constraint_factory_.Reset(); |
1695 blink::WebMediaTrackConstraintSet& advanced1 = | 1487 blink::WebMediaTrackConstraintSet& advanced1 = |
1696 constraint_factory_.AddAdvanced(); | 1488 constraint_factory_.AddAdvanced(); |
1697 advanced1.width.setMin(800); | 1489 advanced1.width.setMin(kMinWidth); |
1698 advanced1.height.setMin(600); | 1490 advanced1.height.setMin(kMinHeight); |
1699 blink::WebMediaTrackConstraintSet& advanced2 = | 1491 blink::WebMediaTrackConstraintSet& advanced2 = |
1700 constraint_factory_.AddAdvanced(); | 1492 constraint_factory_.AddAdvanced(); |
1701 advanced2.width.setMax(640); | 1493 advanced2.width.setMax(640); |
1702 advanced2.height.setMax(480); | 1494 advanced2.height.setMax(480); |
1703 advanced2.frameRate.setExact(60.0); | 1495 advanced2.frameRate.setExact(60.0); |
1704 auto result = SelectSettings(); | 1496 auto result = SelectSettings(); |
1705 EXPECT_TRUE(result.HasValue()); | 1497 EXPECT_TRUE(result.HasValue()); |
1706 EXPECT_EQ(800, result.Width()); | 1498 EXPECT_EQ(std::round(kMinHeight * kDefaultScreenCastAspectRatio), |
1707 EXPECT_EQ(600, result.Height()); | 1499 result.Width()); |
1500 EXPECT_EQ(kMinHeight, result.Height()); | |
1708 EXPECT_EQ(kDefaultScreenCastFrameRate, result.FrameRate()); | 1501 EXPECT_EQ(kDefaultScreenCastFrameRate, result.FrameRate()); |
1709 EXPECT_EQ(800.0 / kMaxScreenCastDimension, | 1502 EXPECT_EQ(static_cast<double>(kMinWidth) / kMaxScreenCastDimension, |
1710 result.track_adapter_settings().min_aspect_ratio); | 1503 result.track_adapter_settings().min_aspect_ratio); |
1711 EXPECT_EQ(kMaxScreenCastDimension / 600.0, | 1504 EXPECT_EQ(static_cast<double>(kMaxScreenCastDimension) / kMinHeight, |
1712 result.track_adapter_settings().max_aspect_ratio); | 1505 result.track_adapter_settings().max_aspect_ratio); |
1713 CheckTrackAdapterSettingsEqualsFormat(result); | 1506 CheckTrackAdapterSettingsEqualsFormat(result); |
1714 } | 1507 } |
1715 | 1508 |
1716 TEST_F(MediaStreamConstraintsUtilVideoContentTest, | 1509 TEST_F(MediaStreamConstraintsUtilVideoContentTest, |
1717 AdvancedContradictoryExactAspectRatio) { | 1510 AdvancedContradictoryExactAspectRatio) { |
1718 constraint_factory_.Reset(); | 1511 constraint_factory_.Reset(); |
1719 blink::WebMediaTrackConstraintSet& advanced1 = | 1512 blink::WebMediaTrackConstraintSet& advanced1 = |
1720 constraint_factory_.AddAdvanced(); | 1513 constraint_factory_.AddAdvanced(); |
1721 advanced1.aspectRatio.setExact(10.0); | 1514 advanced1.aspectRatio.setExact(10.0); |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1780 advanced2.frameRate.setMax(35.0); | 1573 advanced2.frameRate.setMax(35.0); |
1781 auto result = SelectSettings(); | 1574 auto result = SelectSettings(); |
1782 EXPECT_TRUE(result.HasValue()); | 1575 EXPECT_TRUE(result.HasValue()); |
1783 EXPECT_LE(40.0, result.FrameRate()); | 1576 EXPECT_LE(40.0, result.FrameRate()); |
1784 CheckNonFrameRateDefaults(result); | 1577 CheckNonFrameRateDefaults(result); |
1785 CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result); | 1578 CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result); |
1786 } | 1579 } |
1787 | 1580 |
1788 TEST_F(MediaStreamConstraintsUtilVideoContentTest, | 1581 TEST_F(MediaStreamConstraintsUtilVideoContentTest, |
1789 AdvancedContradictoryWidthFrameRate) { | 1582 AdvancedContradictoryWidthFrameRate) { |
1583 const int kMaxWidth = 1920; | |
1790 constraint_factory_.Reset(); | 1584 constraint_factory_.Reset(); |
1791 blink::WebMediaTrackConstraintSet& advanced1 = | 1585 blink::WebMediaTrackConstraintSet& advanced1 = |
1792 constraint_factory_.AddAdvanced(); | 1586 constraint_factory_.AddAdvanced(); |
1793 advanced1.width.setMax(1920); | 1587 advanced1.width.setMax(kMaxWidth); |
1794 blink::WebMediaTrackConstraintSet& advanced2 = | 1588 blink::WebMediaTrackConstraintSet& advanced2 = |
1795 constraint_factory_.AddAdvanced(); | 1589 constraint_factory_.AddAdvanced(); |
1796 advanced2.width.setMin(2000); | 1590 advanced2.width.setMin(2000); |
1797 advanced2.frameRate.setExact(10.0); | 1591 advanced2.frameRate.setExact(10.0); |
1798 blink::WebMediaTrackConstraintSet& advanced3 = | 1592 blink::WebMediaTrackConstraintSet& advanced3 = |
1799 constraint_factory_.AddAdvanced(); | 1593 constraint_factory_.AddAdvanced(); |
1800 advanced3.frameRate.setExact(90.0); | 1594 advanced3.frameRate.setExact(90.0); |
1801 auto result = SelectSettings(); | 1595 auto result = SelectSettings(); |
1802 EXPECT_TRUE(result.HasValue()); | 1596 EXPECT_TRUE(result.HasValue()); |
1803 EXPECT_EQ(kDefaultScreenCastWidth, result.Width()); | 1597 EXPECT_EQ(kMaxWidth, result.Width()); |
1804 EXPECT_EQ(kDefaultScreenCastHeight, result.Height()); | 1598 EXPECT_EQ(std::round(kMaxWidth / kDefaultScreenCastAspectRatio), |
1599 result.Height()); | |
1805 EXPECT_EQ(90.0, result.FrameRate()); | 1600 EXPECT_EQ(90.0, result.FrameRate()); |
1806 EXPECT_EQ( | 1601 EXPECT_EQ( |
1807 static_cast<double>(kMinScreenCastDimension) / kMaxScreenCastDimension, | 1602 static_cast<double>(kMinScreenCastDimension) / kMaxScreenCastDimension, |
1808 result.track_adapter_settings().min_aspect_ratio); | 1603 result.track_adapter_settings().min_aspect_ratio); |
1809 EXPECT_EQ(1920.0 / kMinScreenCastDimension, | 1604 EXPECT_EQ(static_cast<double>(kMaxWidth) / kMinScreenCastDimension, |
1810 result.track_adapter_settings().max_aspect_ratio); | 1605 result.track_adapter_settings().max_aspect_ratio); |
1811 CheckTrackAdapterSettingsEqualsFormat(result); | 1606 CheckTrackAdapterSettingsEqualsFormat(result); |
1812 } | 1607 } |
1813 | 1608 |
1814 TEST_F(MediaStreamConstraintsUtilVideoContentTest, | 1609 TEST_F(MediaStreamConstraintsUtilVideoContentTest, |
1815 AdvancedContradictoryHeightFrameRate) { | 1610 AdvancedContradictoryHeightFrameRate) { |
1611 const int kMaxHeight = 2000; | |
1816 constraint_factory_.Reset(); | 1612 constraint_factory_.Reset(); |
1817 blink::WebMediaTrackConstraintSet& advanced1 = | 1613 blink::WebMediaTrackConstraintSet& advanced1 = |
1818 constraint_factory_.AddAdvanced(); | 1614 constraint_factory_.AddAdvanced(); |
1819 advanced1.height.setMax(1080); | 1615 advanced1.height.setMax(kMaxHeight); |
1820 blink::WebMediaTrackConstraintSet& advanced2 = | 1616 blink::WebMediaTrackConstraintSet& advanced2 = |
1821 constraint_factory_.AddAdvanced(); | 1617 constraint_factory_.AddAdvanced(); |
1822 advanced2.height.setMin(1500); | 1618 advanced2.height.setMin(4500); |
1823 advanced2.frameRate.setExact(10.0); | 1619 advanced2.frameRate.setExact(10.0); |
1824 blink::WebMediaTrackConstraintSet& advanced3 = | 1620 blink::WebMediaTrackConstraintSet& advanced3 = |
1825 constraint_factory_.AddAdvanced(); | 1621 constraint_factory_.AddAdvanced(); |
1826 advanced3.frameRate.setExact(60.0); | 1622 advanced3.frameRate.setExact(60.0); |
1827 auto result = SelectSettings(); | 1623 auto result = SelectSettings(); |
1828 EXPECT_TRUE(result.HasValue()); | 1624 EXPECT_TRUE(result.HasValue()); |
1829 EXPECT_EQ(kDefaultScreenCastWidth, result.Width()); | 1625 EXPECT_EQ(kMaxHeight * kDefaultScreenCastAspectRatio, result.Width()); |
1830 EXPECT_EQ(kDefaultScreenCastHeight, result.Height()); | 1626 // Height defaults to explicitly given max constraint. |
1627 EXPECT_EQ(kMaxHeight, result.Height()); | |
1831 EXPECT_EQ(60.0, result.FrameRate()); | 1628 EXPECT_EQ(60.0, result.FrameRate()); |
1832 EXPECT_EQ(static_cast<double>(kMinScreenCastDimension) / 1080.0, | 1629 EXPECT_EQ(static_cast<double>(kMinScreenCastDimension) / kMaxHeight, |
1833 result.track_adapter_settings().min_aspect_ratio); | 1630 result.track_adapter_settings().min_aspect_ratio); |
1834 EXPECT_EQ( | 1631 EXPECT_EQ( |
1835 static_cast<double>(kMaxScreenCastDimension) / kMinScreenCastDimension, | 1632 static_cast<double>(kMaxScreenCastDimension) / kMinScreenCastDimension, |
1836 result.track_adapter_settings().max_aspect_ratio); | 1633 result.track_adapter_settings().max_aspect_ratio); |
1837 CheckTrackAdapterSettingsEqualsFormat(result); | 1634 CheckTrackAdapterSettingsEqualsFormat(result); |
1838 } | 1635 } |
1839 | 1636 |
1840 TEST_F(MediaStreamConstraintsUtilVideoContentTest, AdvancedDeviceID) { | 1637 TEST_F(MediaStreamConstraintsUtilVideoContentTest, AdvancedDeviceID) { |
1841 const std::string kDeviceID1 = "fake_device_1"; | 1638 const std::string kDeviceID1 = "fake_device_1"; |
1842 const std::string kDeviceID2 = "fake_device_2"; | 1639 const std::string kDeviceID2 = "fake_device_2"; |
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2005 // Exact aspect ratio prevents the resolution from being adjusted. | 1802 // Exact aspect ratio prevents the resolution from being adjusted. |
2006 EXPECT_EQ(media::RESOLUTION_POLICY_FIXED_RESOLUTION, | 1803 EXPECT_EQ(media::RESOLUTION_POLICY_FIXED_RESOLUTION, |
2007 result.ResolutionChangePolicy()); | 1804 result.ResolutionChangePolicy()); |
2008 EXPECT_EQ(1.32, result.track_adapter_settings().min_aspect_ratio); | 1805 EXPECT_EQ(1.32, result.track_adapter_settings().min_aspect_ratio); |
2009 EXPECT_EQ(1.32, result.track_adapter_settings().max_aspect_ratio); | 1806 EXPECT_EQ(1.32, result.track_adapter_settings().max_aspect_ratio); |
2010 CheckTrackAdapterSettingsEqualsFormat(result); | 1807 CheckTrackAdapterSettingsEqualsFormat(result); |
2011 } | 1808 } |
2012 } | 1809 } |
2013 | 1810 |
2014 } // namespace content | 1811 } // namespace content |
OLD | NEW |