Chromium Code Reviews| 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 |