| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| (...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 361 TEST_F(SendStatisticsProxyTest, OnSendEncodedImageWithoutQpQpSumWontExist) { | 361 TEST_F(SendStatisticsProxyTest, OnSendEncodedImageWithoutQpQpSumWontExist) { |
| 362 EncodedImage encoded_image; | 362 EncodedImage encoded_image; |
| 363 CodecSpecificInfo codec_info; | 363 CodecSpecificInfo codec_info; |
| 364 encoded_image.qp_ = -1; | 364 encoded_image.qp_ = -1; |
| 365 EXPECT_EQ(rtc::Optional<uint64_t>(), statistics_proxy_->GetStats().qp_sum); | 365 EXPECT_EQ(rtc::Optional<uint64_t>(), statistics_proxy_->GetStats().qp_sum); |
| 366 statistics_proxy_->OnSendEncodedImage(encoded_image, &codec_info); | 366 statistics_proxy_->OnSendEncodedImage(encoded_image, &codec_info); |
| 367 EXPECT_EQ(rtc::Optional<uint64_t>(), statistics_proxy_->GetStats().qp_sum); | 367 EXPECT_EQ(rtc::Optional<uint64_t>(), statistics_proxy_->GetStats().qp_sum); |
| 368 } | 368 } |
| 369 | 369 |
| 370 TEST_F(SendStatisticsProxyTest, GetCpuAdaptationStats) { | 370 TEST_F(SendStatisticsProxyTest, GetCpuAdaptationStats) { |
| 371 ViEEncoder::AdaptCounts cpu_counts; | 371 VideoStreamEncoder::AdaptCounts cpu_counts; |
| 372 ViEEncoder::AdaptCounts quality_counts; | 372 VideoStreamEncoder::AdaptCounts quality_counts; |
| 373 EXPECT_FALSE(statistics_proxy_->GetStats().cpu_limited_framerate); | 373 EXPECT_FALSE(statistics_proxy_->GetStats().cpu_limited_framerate); |
| 374 EXPECT_FALSE(statistics_proxy_->GetStats().cpu_limited_resolution); | 374 EXPECT_FALSE(statistics_proxy_->GetStats().cpu_limited_resolution); |
| 375 cpu_counts.fps = 1; | 375 cpu_counts.fps = 1; |
| 376 cpu_counts.resolution = 0; | 376 cpu_counts.resolution = 0; |
| 377 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); | 377 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); |
| 378 EXPECT_TRUE(statistics_proxy_->GetStats().cpu_limited_framerate); | 378 EXPECT_TRUE(statistics_proxy_->GetStats().cpu_limited_framerate); |
| 379 EXPECT_FALSE(statistics_proxy_->GetStats().cpu_limited_resolution); | 379 EXPECT_FALSE(statistics_proxy_->GetStats().cpu_limited_resolution); |
| 380 cpu_counts.fps = 0; | 380 cpu_counts.fps = 0; |
| 381 cpu_counts.resolution = 1; | 381 cpu_counts.resolution = 1; |
| 382 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); | 382 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); |
| 383 EXPECT_FALSE(statistics_proxy_->GetStats().cpu_limited_framerate); | 383 EXPECT_FALSE(statistics_proxy_->GetStats().cpu_limited_framerate); |
| 384 EXPECT_TRUE(statistics_proxy_->GetStats().cpu_limited_resolution); | 384 EXPECT_TRUE(statistics_proxy_->GetStats().cpu_limited_resolution); |
| 385 cpu_counts.fps = 1; | 385 cpu_counts.fps = 1; |
| 386 cpu_counts.resolution = -1; | 386 cpu_counts.resolution = -1; |
| 387 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); | 387 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); |
| 388 EXPECT_TRUE(statistics_proxy_->GetStats().cpu_limited_framerate); | 388 EXPECT_TRUE(statistics_proxy_->GetStats().cpu_limited_framerate); |
| 389 EXPECT_FALSE(statistics_proxy_->GetStats().cpu_limited_resolution); | 389 EXPECT_FALSE(statistics_proxy_->GetStats().cpu_limited_resolution); |
| 390 cpu_counts.fps = -1; | 390 cpu_counts.fps = -1; |
| 391 cpu_counts.resolution = -1; | 391 cpu_counts.resolution = -1; |
| 392 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); | 392 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); |
| 393 EXPECT_FALSE(statistics_proxy_->GetStats().cpu_limited_framerate); | 393 EXPECT_FALSE(statistics_proxy_->GetStats().cpu_limited_framerate); |
| 394 EXPECT_FALSE(statistics_proxy_->GetStats().cpu_limited_resolution); | 394 EXPECT_FALSE(statistics_proxy_->GetStats().cpu_limited_resolution); |
| 395 } | 395 } |
| 396 | 396 |
| 397 TEST_F(SendStatisticsProxyTest, GetQualityAdaptationStats) { | 397 TEST_F(SendStatisticsProxyTest, GetQualityAdaptationStats) { |
| 398 ViEEncoder::AdaptCounts cpu_counts; | 398 VideoStreamEncoder::AdaptCounts cpu_counts; |
| 399 ViEEncoder::AdaptCounts quality_counts; | 399 VideoStreamEncoder::AdaptCounts quality_counts; |
| 400 EXPECT_FALSE(statistics_proxy_->GetStats().bw_limited_framerate); | 400 EXPECT_FALSE(statistics_proxy_->GetStats().bw_limited_framerate); |
| 401 EXPECT_FALSE(statistics_proxy_->GetStats().bw_limited_resolution); | 401 EXPECT_FALSE(statistics_proxy_->GetStats().bw_limited_resolution); |
| 402 quality_counts.fps = 1; | 402 quality_counts.fps = 1; |
| 403 quality_counts.resolution = 0; | 403 quality_counts.resolution = 0; |
| 404 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); | 404 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); |
| 405 EXPECT_TRUE(statistics_proxy_->GetStats().bw_limited_framerate); | 405 EXPECT_TRUE(statistics_proxy_->GetStats().bw_limited_framerate); |
| 406 EXPECT_FALSE(statistics_proxy_->GetStats().bw_limited_resolution); | 406 EXPECT_FALSE(statistics_proxy_->GetStats().bw_limited_resolution); |
| 407 quality_counts.fps = 0; | 407 quality_counts.fps = 0; |
| 408 quality_counts.resolution = 1; | 408 quality_counts.resolution = 1; |
| 409 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); | 409 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); |
| 410 EXPECT_FALSE(statistics_proxy_->GetStats().bw_limited_framerate); | 410 EXPECT_FALSE(statistics_proxy_->GetStats().bw_limited_framerate); |
| 411 EXPECT_TRUE(statistics_proxy_->GetStats().bw_limited_resolution); | 411 EXPECT_TRUE(statistics_proxy_->GetStats().bw_limited_resolution); |
| 412 quality_counts.fps = 1; | 412 quality_counts.fps = 1; |
| 413 quality_counts.resolution = -1; | 413 quality_counts.resolution = -1; |
| 414 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); | 414 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); |
| 415 EXPECT_TRUE(statistics_proxy_->GetStats().bw_limited_framerate); | 415 EXPECT_TRUE(statistics_proxy_->GetStats().bw_limited_framerate); |
| 416 EXPECT_FALSE(statistics_proxy_->GetStats().bw_limited_resolution); | 416 EXPECT_FALSE(statistics_proxy_->GetStats().bw_limited_resolution); |
| 417 quality_counts.fps = -1; | 417 quality_counts.fps = -1; |
| 418 quality_counts.resolution = -1; | 418 quality_counts.resolution = -1; |
| 419 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); | 419 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); |
| 420 EXPECT_FALSE(statistics_proxy_->GetStats().bw_limited_framerate); | 420 EXPECT_FALSE(statistics_proxy_->GetStats().bw_limited_framerate); |
| 421 EXPECT_FALSE(statistics_proxy_->GetStats().bw_limited_resolution); | 421 EXPECT_FALSE(statistics_proxy_->GetStats().bw_limited_resolution); |
| 422 } | 422 } |
| 423 | 423 |
| 424 TEST_F(SendStatisticsProxyTest, GetStatsReportsCpuAdaptChanges) { | 424 TEST_F(SendStatisticsProxyTest, GetStatsReportsCpuAdaptChanges) { |
| 425 ViEEncoder::AdaptCounts cpu_counts; | 425 VideoStreamEncoder::AdaptCounts cpu_counts; |
| 426 ViEEncoder::AdaptCounts quality_counts; | 426 VideoStreamEncoder::AdaptCounts quality_counts; |
| 427 EXPECT_EQ(0, statistics_proxy_->GetStats().number_of_cpu_adapt_changes); | 427 EXPECT_EQ(0, statistics_proxy_->GetStats().number_of_cpu_adapt_changes); |
| 428 | 428 |
| 429 cpu_counts.resolution = 1; | 429 cpu_counts.resolution = 1; |
| 430 statistics_proxy_->OnCpuAdaptationChanged(cpu_counts, quality_counts); | 430 statistics_proxy_->OnCpuAdaptationChanged(cpu_counts, quality_counts); |
| 431 EXPECT_FALSE(statistics_proxy_->GetStats().cpu_limited_framerate); | 431 EXPECT_FALSE(statistics_proxy_->GetStats().cpu_limited_framerate); |
| 432 EXPECT_TRUE(statistics_proxy_->GetStats().cpu_limited_resolution); | 432 EXPECT_TRUE(statistics_proxy_->GetStats().cpu_limited_resolution); |
| 433 EXPECT_EQ(1, statistics_proxy_->GetStats().number_of_cpu_adapt_changes); | 433 EXPECT_EQ(1, statistics_proxy_->GetStats().number_of_cpu_adapt_changes); |
| 434 | 434 |
| 435 cpu_counts.resolution = 2; | 435 cpu_counts.resolution = 2; |
| 436 statistics_proxy_->OnCpuAdaptationChanged(cpu_counts, quality_counts); | 436 statistics_proxy_->OnCpuAdaptationChanged(cpu_counts, quality_counts); |
| 437 EXPECT_FALSE(statistics_proxy_->GetStats().cpu_limited_framerate); | 437 EXPECT_FALSE(statistics_proxy_->GetStats().cpu_limited_framerate); |
| 438 EXPECT_TRUE(statistics_proxy_->GetStats().cpu_limited_resolution); | 438 EXPECT_TRUE(statistics_proxy_->GetStats().cpu_limited_resolution); |
| 439 EXPECT_EQ(2, statistics_proxy_->GetStats().number_of_cpu_adapt_changes); | 439 EXPECT_EQ(2, statistics_proxy_->GetStats().number_of_cpu_adapt_changes); |
| 440 EXPECT_EQ(0, statistics_proxy_->GetStats().number_of_quality_adapt_changes); | 440 EXPECT_EQ(0, statistics_proxy_->GetStats().number_of_quality_adapt_changes); |
| 441 } | 441 } |
| 442 | 442 |
| 443 TEST_F(SendStatisticsProxyTest, GetStatsReportsQualityAdaptChanges) { | 443 TEST_F(SendStatisticsProxyTest, GetStatsReportsQualityAdaptChanges) { |
| 444 ViEEncoder::AdaptCounts cpu_counts; | 444 VideoStreamEncoder::AdaptCounts cpu_counts; |
| 445 ViEEncoder::AdaptCounts quality_counts; | 445 VideoStreamEncoder::AdaptCounts quality_counts; |
| 446 EXPECT_EQ(0, statistics_proxy_->GetStats().number_of_quality_adapt_changes); | 446 EXPECT_EQ(0, statistics_proxy_->GetStats().number_of_quality_adapt_changes); |
| 447 | 447 |
| 448 quality_counts.fps = 1; | 448 quality_counts.fps = 1; |
| 449 statistics_proxy_->OnQualityAdaptationChanged(cpu_counts, quality_counts); | 449 statistics_proxy_->OnQualityAdaptationChanged(cpu_counts, quality_counts); |
| 450 EXPECT_TRUE(statistics_proxy_->GetStats().bw_limited_framerate); | 450 EXPECT_TRUE(statistics_proxy_->GetStats().bw_limited_framerate); |
| 451 EXPECT_FALSE(statistics_proxy_->GetStats().bw_limited_resolution); | 451 EXPECT_FALSE(statistics_proxy_->GetStats().bw_limited_resolution); |
| 452 EXPECT_EQ(1, statistics_proxy_->GetStats().number_of_quality_adapt_changes); | 452 EXPECT_EQ(1, statistics_proxy_->GetStats().number_of_quality_adapt_changes); |
| 453 | 453 |
| 454 quality_counts.fps = 0; | 454 quality_counts.fps = 0; |
| 455 statistics_proxy_->OnQualityAdaptationChanged(cpu_counts, quality_counts); | 455 statistics_proxy_->OnQualityAdaptationChanged(cpu_counts, quality_counts); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 467 statistics_proxy_.reset(); | 467 statistics_proxy_.reset(); |
| 468 EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu")); | 468 EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu")); |
| 469 EXPECT_EQ(0, | 469 EXPECT_EQ(0, |
| 470 metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality")); | 470 metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality")); |
| 471 } | 471 } |
| 472 | 472 |
| 473 TEST_F(SendStatisticsProxyTest, AdaptChangesNotReported_MinRuntimeNotPassed) { | 473 TEST_F(SendStatisticsProxyTest, AdaptChangesNotReported_MinRuntimeNotPassed) { |
| 474 // First RTP packet sent. | 474 // First RTP packet sent. |
| 475 UpdateDataCounters(kFirstSsrc); | 475 UpdateDataCounters(kFirstSsrc); |
| 476 // Enable adaptation. | 476 // Enable adaptation. |
| 477 ViEEncoder::AdaptCounts cpu_counts; | 477 VideoStreamEncoder::AdaptCounts cpu_counts; |
| 478 ViEEncoder::AdaptCounts quality_counts; | 478 VideoStreamEncoder::AdaptCounts quality_counts; |
| 479 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); | 479 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); |
| 480 // Min runtime has not passed. | 480 // Min runtime has not passed. |
| 481 fake_clock_.AdvanceTimeMilliseconds(metrics::kMinRunTimeInSeconds * 1000 - 1); | 481 fake_clock_.AdvanceTimeMilliseconds(metrics::kMinRunTimeInSeconds * 1000 - 1); |
| 482 statistics_proxy_.reset(); | 482 statistics_proxy_.reset(); |
| 483 EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu")); | 483 EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu")); |
| 484 EXPECT_EQ(0, | 484 EXPECT_EQ(0, |
| 485 metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality")); | 485 metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality")); |
| 486 } | 486 } |
| 487 | 487 |
| 488 TEST_F(SendStatisticsProxyTest, ZeroAdaptChangesReported) { | 488 TEST_F(SendStatisticsProxyTest, ZeroAdaptChangesReported) { |
| 489 // First RTP packet sent. | 489 // First RTP packet sent. |
| 490 UpdateDataCounters(kFirstSsrc); | 490 UpdateDataCounters(kFirstSsrc); |
| 491 // Enable adaptation. | 491 // Enable adaptation. |
| 492 ViEEncoder::AdaptCounts cpu_counts; | 492 VideoStreamEncoder::AdaptCounts cpu_counts; |
| 493 ViEEncoder::AdaptCounts quality_counts; | 493 VideoStreamEncoder::AdaptCounts quality_counts; |
| 494 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); | 494 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); |
| 495 // Min runtime has passed. | 495 // Min runtime has passed. |
| 496 fake_clock_.AdvanceTimeMilliseconds(metrics::kMinRunTimeInSeconds * 1000); | 496 fake_clock_.AdvanceTimeMilliseconds(metrics::kMinRunTimeInSeconds * 1000); |
| 497 statistics_proxy_.reset(); | 497 statistics_proxy_.reset(); |
| 498 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu")); | 498 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu")); |
| 499 EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Cpu", 0)); | 499 EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Cpu", 0)); |
| 500 EXPECT_EQ(1, | 500 EXPECT_EQ(1, |
| 501 metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality")); | 501 metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality")); |
| 502 EXPECT_EQ( | 502 EXPECT_EQ( |
| 503 1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Quality", 0)); | 503 1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Quality", 0)); |
| 504 } | 504 } |
| 505 | 505 |
| 506 TEST_F(SendStatisticsProxyTest, CpuAdaptChangesReported) { | 506 TEST_F(SendStatisticsProxyTest, CpuAdaptChangesReported) { |
| 507 // First RTP packet sent. | 507 // First RTP packet sent. |
| 508 UpdateDataCounters(kFirstSsrc); | 508 UpdateDataCounters(kFirstSsrc); |
| 509 // Enable adaptation. | 509 // Enable adaptation. |
| 510 ViEEncoder::AdaptCounts cpu_counts; | 510 VideoStreamEncoder::AdaptCounts cpu_counts; |
| 511 ViEEncoder::AdaptCounts quality_counts; | 511 VideoStreamEncoder::AdaptCounts quality_counts; |
| 512 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); | 512 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); |
| 513 // Adapt changes: 1, elapsed time: 10 sec => 6 per minute. | 513 // Adapt changes: 1, elapsed time: 10 sec => 6 per minute. |
| 514 statistics_proxy_->OnCpuAdaptationChanged(cpu_counts, quality_counts); | 514 statistics_proxy_->OnCpuAdaptationChanged(cpu_counts, quality_counts); |
| 515 fake_clock_.AdvanceTimeMilliseconds(10000); | 515 fake_clock_.AdvanceTimeMilliseconds(10000); |
| 516 statistics_proxy_.reset(); | 516 statistics_proxy_.reset(); |
| 517 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu")); | 517 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu")); |
| 518 EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Cpu", 6)); | 518 EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Cpu", 6)); |
| 519 } | 519 } |
| 520 | 520 |
| 521 TEST_F(SendStatisticsProxyTest, AdaptChangesStatsExcludesDisabledTime) { | 521 TEST_F(SendStatisticsProxyTest, AdaptChangesStatsExcludesDisabledTime) { |
| 522 // First RTP packet sent. | 522 // First RTP packet sent. |
| 523 UpdateDataCounters(kFirstSsrc); | 523 UpdateDataCounters(kFirstSsrc); |
| 524 | 524 |
| 525 // Disable quality adaptation. | 525 // Disable quality adaptation. |
| 526 ViEEncoder::AdaptCounts cpu_counts; | 526 VideoStreamEncoder::AdaptCounts cpu_counts; |
| 527 ViEEncoder::AdaptCounts quality_counts; | 527 VideoStreamEncoder::AdaptCounts quality_counts; |
| 528 quality_counts.fps = -1; | 528 quality_counts.fps = -1; |
| 529 quality_counts.resolution = -1; | 529 quality_counts.resolution = -1; |
| 530 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); | 530 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); |
| 531 fake_clock_.AdvanceTimeMilliseconds(10000); | 531 fake_clock_.AdvanceTimeMilliseconds(10000); |
| 532 | 532 |
| 533 // Enable quality adaptation. | 533 // Enable quality adaptation. |
| 534 // Adapt changes: 2, elapsed time: 20 sec. | 534 // Adapt changes: 2, elapsed time: 20 sec. |
| 535 quality_counts.fps = 0; | 535 quality_counts.fps = 0; |
| 536 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); | 536 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); |
| 537 fake_clock_.AdvanceTimeMilliseconds(5000); | 537 fake_clock_.AdvanceTimeMilliseconds(5000); |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 584 EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu")); | 584 EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu")); |
| 585 EXPECT_EQ(0, | 585 EXPECT_EQ(0, |
| 586 metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality")); | 586 metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality")); |
| 587 } | 587 } |
| 588 | 588 |
| 589 TEST_F(SendStatisticsProxyTest, QualityAdaptChangesStatsExcludesSuspendedTime) { | 589 TEST_F(SendStatisticsProxyTest, QualityAdaptChangesStatsExcludesSuspendedTime) { |
| 590 // First RTP packet sent. | 590 // First RTP packet sent. |
| 591 UpdateDataCounters(kFirstSsrc); | 591 UpdateDataCounters(kFirstSsrc); |
| 592 | 592 |
| 593 // Enable adaptation. | 593 // Enable adaptation. |
| 594 ViEEncoder::AdaptCounts cpu_counts; | 594 VideoStreamEncoder::AdaptCounts cpu_counts; |
| 595 ViEEncoder::AdaptCounts quality_counts; | 595 VideoStreamEncoder::AdaptCounts quality_counts; |
| 596 // Adapt changes: 2, elapsed time: 20 sec. | 596 // Adapt changes: 2, elapsed time: 20 sec. |
| 597 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); | 597 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); |
| 598 fake_clock_.AdvanceTimeMilliseconds(20000); | 598 fake_clock_.AdvanceTimeMilliseconds(20000); |
| 599 statistics_proxy_->OnQualityAdaptationChanged(cpu_counts, quality_counts); | 599 statistics_proxy_->OnQualityAdaptationChanged(cpu_counts, quality_counts); |
| 600 statistics_proxy_->OnQualityAdaptationChanged(cpu_counts, quality_counts); | 600 statistics_proxy_->OnQualityAdaptationChanged(cpu_counts, quality_counts); |
| 601 | 601 |
| 602 // Suspend and resume video. | 602 // Suspend and resume video. |
| 603 statistics_proxy_->OnSuspendChange(true); | 603 statistics_proxy_->OnSuspendChange(true); |
| 604 fake_clock_.AdvanceTimeMilliseconds(30000); | 604 fake_clock_.AdvanceTimeMilliseconds(30000); |
| 605 statistics_proxy_->OnSuspendChange(false); | 605 statistics_proxy_->OnSuspendChange(false); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 618 | 618 |
| 619 TEST_F(SendStatisticsProxyTest, CpuAdaptChangesStatsExcludesSuspendedTime) { | 619 TEST_F(SendStatisticsProxyTest, CpuAdaptChangesStatsExcludesSuspendedTime) { |
| 620 // First RTP packet sent. | 620 // First RTP packet sent. |
| 621 UpdateDataCounters(kFirstSsrc); | 621 UpdateDataCounters(kFirstSsrc); |
| 622 | 622 |
| 623 // Video not suspended. | 623 // Video not suspended. |
| 624 statistics_proxy_->OnSuspendChange(false); | 624 statistics_proxy_->OnSuspendChange(false); |
| 625 fake_clock_.AdvanceTimeMilliseconds(30000); | 625 fake_clock_.AdvanceTimeMilliseconds(30000); |
| 626 | 626 |
| 627 // Enable adaptation. | 627 // Enable adaptation. |
| 628 ViEEncoder::AdaptCounts cpu_counts; | 628 VideoStreamEncoder::AdaptCounts cpu_counts; |
| 629 ViEEncoder::AdaptCounts quality_counts; | 629 VideoStreamEncoder::AdaptCounts quality_counts; |
| 630 // Adapt changes: 1, elapsed time: 20 sec. | 630 // Adapt changes: 1, elapsed time: 20 sec. |
| 631 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); | 631 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); |
| 632 fake_clock_.AdvanceTimeMilliseconds(10000); | 632 fake_clock_.AdvanceTimeMilliseconds(10000); |
| 633 statistics_proxy_->OnCpuAdaptationChanged(cpu_counts, quality_counts); | 633 statistics_proxy_->OnCpuAdaptationChanged(cpu_counts, quality_counts); |
| 634 | 634 |
| 635 // Video not suspended, stats time already started. | 635 // Video not suspended, stats time already started. |
| 636 statistics_proxy_->OnSuspendChange(false); | 636 statistics_proxy_->OnSuspendChange(false); |
| 637 fake_clock_.AdvanceTimeMilliseconds(10000); | 637 fake_clock_.AdvanceTimeMilliseconds(10000); |
| 638 | 638 |
| 639 // Disable adaptation. | 639 // Disable adaptation. |
| (...skipping 23 matching lines...) Expand all Loading... |
| 663 } | 663 } |
| 664 | 664 |
| 665 TEST_F(SendStatisticsProxyTest, AdaptChangesStatsNotStartedIfVideoSuspended) { | 665 TEST_F(SendStatisticsProxyTest, AdaptChangesStatsNotStartedIfVideoSuspended) { |
| 666 // First RTP packet sent. | 666 // First RTP packet sent. |
| 667 UpdateDataCounters(kFirstSsrc); | 667 UpdateDataCounters(kFirstSsrc); |
| 668 | 668 |
| 669 // Video suspended. | 669 // Video suspended. |
| 670 statistics_proxy_->OnSuspendChange(true); | 670 statistics_proxy_->OnSuspendChange(true); |
| 671 | 671 |
| 672 // Enable adaptation, stats time not started when suspended. | 672 // Enable adaptation, stats time not started when suspended. |
| 673 ViEEncoder::AdaptCounts cpu_counts; | 673 VideoStreamEncoder::AdaptCounts cpu_counts; |
| 674 ViEEncoder::AdaptCounts quality_counts; | 674 VideoStreamEncoder::AdaptCounts quality_counts; |
| 675 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); | 675 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); |
| 676 fake_clock_.AdvanceTimeMilliseconds(10000); | 676 fake_clock_.AdvanceTimeMilliseconds(10000); |
| 677 | 677 |
| 678 // Resume video, stats time started. | 678 // Resume video, stats time started. |
| 679 // Adapt changes: 1, elapsed time: 10 sec. | 679 // Adapt changes: 1, elapsed time: 10 sec. |
| 680 statistics_proxy_->OnSuspendChange(false); | 680 statistics_proxy_->OnSuspendChange(false); |
| 681 fake_clock_.AdvanceTimeMilliseconds(10000); | 681 fake_clock_.AdvanceTimeMilliseconds(10000); |
| 682 statistics_proxy_->OnCpuAdaptationChanged(cpu_counts, quality_counts); | 682 statistics_proxy_->OnCpuAdaptationChanged(cpu_counts, quality_counts); |
| 683 | 683 |
| 684 // Adapt changes: 1, elapsed time: 10 sec => 6 per minute. | 684 // Adapt changes: 1, elapsed time: 10 sec => 6 per minute. |
| 685 statistics_proxy_.reset(); | 685 statistics_proxy_.reset(); |
| 686 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu")); | 686 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu")); |
| 687 EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Cpu", 6)); | 687 EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Cpu", 6)); |
| 688 } | 688 } |
| 689 | 689 |
| 690 TEST_F(SendStatisticsProxyTest, AdaptChangesStatsRestartsOnFirstSentPacket) { | 690 TEST_F(SendStatisticsProxyTest, AdaptChangesStatsRestartsOnFirstSentPacket) { |
| 691 // Send first packet, adaptation enabled. | 691 // Send first packet, adaptation enabled. |
| 692 // Elapsed time before first packet is sent should be excluded. | 692 // Elapsed time before first packet is sent should be excluded. |
| 693 ViEEncoder::AdaptCounts cpu_counts; | 693 VideoStreamEncoder::AdaptCounts cpu_counts; |
| 694 ViEEncoder::AdaptCounts quality_counts; | 694 VideoStreamEncoder::AdaptCounts quality_counts; |
| 695 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); | 695 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); |
| 696 fake_clock_.AdvanceTimeMilliseconds(10000); | 696 fake_clock_.AdvanceTimeMilliseconds(10000); |
| 697 UpdateDataCounters(kFirstSsrc); | 697 UpdateDataCounters(kFirstSsrc); |
| 698 | 698 |
| 699 // Adapt changes: 1, elapsed time: 10 sec. | 699 // Adapt changes: 1, elapsed time: 10 sec. |
| 700 fake_clock_.AdvanceTimeMilliseconds(10000); | 700 fake_clock_.AdvanceTimeMilliseconds(10000); |
| 701 statistics_proxy_->OnQualityAdaptationChanged(cpu_counts, quality_counts); | 701 statistics_proxy_->OnQualityAdaptationChanged(cpu_counts, quality_counts); |
| 702 UpdateDataCounters(kFirstSsrc); | 702 UpdateDataCounters(kFirstSsrc); |
| 703 | 703 |
| 704 // Adapt changes: 1, elapsed time: 10 sec => 6 per minute. | 704 // Adapt changes: 1, elapsed time: 10 sec => 6 per minute. |
| 705 statistics_proxy_.reset(); | 705 statistics_proxy_.reset(); |
| 706 EXPECT_EQ(1, | 706 EXPECT_EQ(1, |
| 707 metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality")); | 707 metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality")); |
| 708 EXPECT_EQ( | 708 EXPECT_EQ( |
| 709 1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Quality", 6)); | 709 1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Quality", 6)); |
| 710 } | 710 } |
| 711 | 711 |
| 712 TEST_F(SendStatisticsProxyTest, AdaptChangesStatsStartedAfterFirstSentPacket) { | 712 TEST_F(SendStatisticsProxyTest, AdaptChangesStatsStartedAfterFirstSentPacket) { |
| 713 // Enable and disable adaptation. | 713 // Enable and disable adaptation. |
| 714 ViEEncoder::AdaptCounts cpu_counts; | 714 VideoStreamEncoder::AdaptCounts cpu_counts; |
| 715 ViEEncoder::AdaptCounts quality_counts; | 715 VideoStreamEncoder::AdaptCounts quality_counts; |
| 716 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); | 716 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); |
| 717 fake_clock_.AdvanceTimeMilliseconds(60000); | 717 fake_clock_.AdvanceTimeMilliseconds(60000); |
| 718 cpu_counts.fps = -1; | 718 cpu_counts.fps = -1; |
| 719 cpu_counts.resolution = -1; | 719 cpu_counts.resolution = -1; |
| 720 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); | 720 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); |
| 721 | 721 |
| 722 // Send first packet, scaling disabled. | 722 // Send first packet, scaling disabled. |
| 723 // Elapsed time before first packet is sent should be excluded. | 723 // Elapsed time before first packet is sent should be excluded. |
| 724 UpdateDataCounters(kFirstSsrc); | 724 UpdateDataCounters(kFirstSsrc); |
| 725 fake_clock_.AdvanceTimeMilliseconds(60000); | 725 fake_clock_.AdvanceTimeMilliseconds(60000); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 736 | 736 |
| 737 // Adapt changes: 1, elapsed time: 20 sec => 3 per minute. | 737 // Adapt changes: 1, elapsed time: 20 sec => 3 per minute. |
| 738 statistics_proxy_.reset(); | 738 statistics_proxy_.reset(); |
| 739 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu")); | 739 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu")); |
| 740 EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Cpu", 3)); | 740 EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Cpu", 3)); |
| 741 } | 741 } |
| 742 | 742 |
| 743 TEST_F(SendStatisticsProxyTest, AdaptChangesReportedAfterContentSwitch) { | 743 TEST_F(SendStatisticsProxyTest, AdaptChangesReportedAfterContentSwitch) { |
| 744 // First RTP packet sent, cpu adaptation enabled. | 744 // First RTP packet sent, cpu adaptation enabled. |
| 745 UpdateDataCounters(kFirstSsrc); | 745 UpdateDataCounters(kFirstSsrc); |
| 746 ViEEncoder::AdaptCounts cpu_counts; | 746 VideoStreamEncoder::AdaptCounts cpu_counts; |
| 747 ViEEncoder::AdaptCounts quality_counts; | 747 VideoStreamEncoder::AdaptCounts quality_counts; |
| 748 quality_counts.fps = -1; | 748 quality_counts.fps = -1; |
| 749 quality_counts.resolution = -1; | 749 quality_counts.resolution = -1; |
| 750 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); | 750 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); |
| 751 | 751 |
| 752 // Adapt changes: 2, elapsed time: 15 sec => 8 per minute. | 752 // Adapt changes: 2, elapsed time: 15 sec => 8 per minute. |
| 753 statistics_proxy_->OnCpuAdaptationChanged(cpu_counts, quality_counts); | 753 statistics_proxy_->OnCpuAdaptationChanged(cpu_counts, quality_counts); |
| 754 fake_clock_.AdvanceTimeMilliseconds(6000); | 754 fake_clock_.AdvanceTimeMilliseconds(6000); |
| 755 statistics_proxy_->OnCpuAdaptationChanged(cpu_counts, quality_counts); | 755 statistics_proxy_->OnCpuAdaptationChanged(cpu_counts, quality_counts); |
| 756 fake_clock_.AdvanceTimeMilliseconds(9000); | 756 fake_clock_.AdvanceTimeMilliseconds(9000); |
| 757 | 757 |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 897 encoded_image._timeStamp = i + 1; | 897 encoded_image._timeStamp = i + 1; |
| 898 statistics_proxy_->OnSendEncodedImage(encoded_image, nullptr); | 898 statistics_proxy_->OnSendEncodedImage(encoded_image, nullptr); |
| 899 } | 899 } |
| 900 // Suspended time interval should not affect the framerate. | 900 // Suspended time interval should not affect the framerate. |
| 901 statistics_proxy_.reset(); | 901 statistics_proxy_.reset(); |
| 902 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.SentFramesPerSecond")); | 902 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.SentFramesPerSecond")); |
| 903 EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.SentFramesPerSecond", kFps)); | 903 EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.SentFramesPerSecond", kFps)); |
| 904 } | 904 } |
| 905 | 905 |
| 906 TEST_F(SendStatisticsProxyTest, CpuLimitedHistogramNotUpdatedWhenDisabled) { | 906 TEST_F(SendStatisticsProxyTest, CpuLimitedHistogramNotUpdatedWhenDisabled) { |
| 907 ViEEncoder::AdaptCounts cpu_counts; | 907 VideoStreamEncoder::AdaptCounts cpu_counts; |
| 908 ViEEncoder::AdaptCounts quality_counts; | 908 VideoStreamEncoder::AdaptCounts quality_counts; |
| 909 cpu_counts.resolution = -1; | 909 cpu_counts.resolution = -1; |
| 910 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); | 910 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); |
| 911 | 911 |
| 912 for (int i = 0; i < SendStatisticsProxy::kMinRequiredMetricsSamples; ++i) | 912 for (int i = 0; i < SendStatisticsProxy::kMinRequiredMetricsSamples; ++i) |
| 913 statistics_proxy_->OnIncomingFrame(kWidth, kHeight); | 913 statistics_proxy_->OnIncomingFrame(kWidth, kHeight); |
| 914 | 914 |
| 915 statistics_proxy_.reset(); | 915 statistics_proxy_.reset(); |
| 916 EXPECT_EQ(0, | 916 EXPECT_EQ(0, |
| 917 metrics::NumSamples("WebRTC.Video.CpuLimitedResolutionInPercent")); | 917 metrics::NumSamples("WebRTC.Video.CpuLimitedResolutionInPercent")); |
| 918 } | 918 } |
| 919 | 919 |
| 920 TEST_F(SendStatisticsProxyTest, CpuLimitedHistogramUpdated) { | 920 TEST_F(SendStatisticsProxyTest, CpuLimitedHistogramUpdated) { |
| 921 ViEEncoder::AdaptCounts cpu_counts; | 921 VideoStreamEncoder::AdaptCounts cpu_counts; |
| 922 ViEEncoder::AdaptCounts quality_counts; | 922 VideoStreamEncoder::AdaptCounts quality_counts; |
| 923 cpu_counts.resolution = 0; | 923 cpu_counts.resolution = 0; |
| 924 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); | 924 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); |
| 925 | 925 |
| 926 for (int i = 0; i < SendStatisticsProxy::kMinRequiredMetricsSamples; ++i) | 926 for (int i = 0; i < SendStatisticsProxy::kMinRequiredMetricsSamples; ++i) |
| 927 statistics_proxy_->OnIncomingFrame(kWidth, kHeight); | 927 statistics_proxy_->OnIncomingFrame(kWidth, kHeight); |
| 928 | 928 |
| 929 cpu_counts.resolution = 1; | 929 cpu_counts.resolution = 1; |
| 930 statistics_proxy_->OnCpuAdaptationChanged(cpu_counts, quality_counts); | 930 statistics_proxy_->OnCpuAdaptationChanged(cpu_counts, quality_counts); |
| 931 | 931 |
| 932 for (int i = 0; i < SendStatisticsProxy::kMinRequiredMetricsSamples; ++i) | 932 for (int i = 0; i < SendStatisticsProxy::kMinRequiredMetricsSamples; ++i) |
| (...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1209 // Resolutions disabled. | 1209 // Resolutions disabled. |
| 1210 EXPECT_EQ(1, metrics::NumSamples( | 1210 EXPECT_EQ(1, metrics::NumSamples( |
| 1211 "WebRTC.Video.BandwidthLimitedResolutionsDisabled")); | 1211 "WebRTC.Video.BandwidthLimitedResolutionsDisabled")); |
| 1212 EXPECT_EQ( | 1212 EXPECT_EQ( |
| 1213 1, metrics::NumEvents("WebRTC.Video.BandwidthLimitedResolutionsDisabled", | 1213 1, metrics::NumEvents("WebRTC.Video.BandwidthLimitedResolutionsDisabled", |
| 1214 kResolutionsDisabled)); | 1214 kResolutionsDisabled)); |
| 1215 } | 1215 } |
| 1216 | 1216 |
| 1217 TEST_F(SendStatisticsProxyTest, | 1217 TEST_F(SendStatisticsProxyTest, |
| 1218 QualityLimitedHistogramsNotUpdatedWhenDisabled) { | 1218 QualityLimitedHistogramsNotUpdatedWhenDisabled) { |
| 1219 ViEEncoder::AdaptCounts cpu_counts; | 1219 VideoStreamEncoder::AdaptCounts cpu_counts; |
| 1220 ViEEncoder::AdaptCounts quality_counts; | 1220 VideoStreamEncoder::AdaptCounts quality_counts; |
| 1221 quality_counts.resolution = -1; | 1221 quality_counts.resolution = -1; |
| 1222 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); | 1222 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); |
| 1223 EncodedImage encoded_image; | 1223 EncodedImage encoded_image; |
| 1224 for (int i = 0; i < SendStatisticsProxy::kMinRequiredMetricsSamples; ++i) | 1224 for (int i = 0; i < SendStatisticsProxy::kMinRequiredMetricsSamples; ++i) |
| 1225 statistics_proxy_->OnSendEncodedImage(encoded_image, &kDefaultCodecInfo); | 1225 statistics_proxy_->OnSendEncodedImage(encoded_image, &kDefaultCodecInfo); |
| 1226 | 1226 |
| 1227 // Histograms are updated when the statistics_proxy_ is deleted. | 1227 // Histograms are updated when the statistics_proxy_ is deleted. |
| 1228 statistics_proxy_.reset(); | 1228 statistics_proxy_.reset(); |
| 1229 EXPECT_EQ( | 1229 EXPECT_EQ( |
| 1230 0, metrics::NumSamples("WebRTC.Video.QualityLimitedResolutionInPercent")); | 1230 0, metrics::NumSamples("WebRTC.Video.QualityLimitedResolutionInPercent")); |
| 1231 EXPECT_EQ(0, metrics::NumSamples( | 1231 EXPECT_EQ(0, metrics::NumSamples( |
| 1232 "WebRTC.Video.QualityLimitedResolutionDownscales")); | 1232 "WebRTC.Video.QualityLimitedResolutionDownscales")); |
| 1233 } | 1233 } |
| 1234 | 1234 |
| 1235 TEST_F(SendStatisticsProxyTest, | 1235 TEST_F(SendStatisticsProxyTest, |
| 1236 QualityLimitedHistogramsUpdatedWhenEnabled_NoResolutionDownscale) { | 1236 QualityLimitedHistogramsUpdatedWhenEnabled_NoResolutionDownscale) { |
| 1237 ViEEncoder::AdaptCounts cpu_counts; | 1237 VideoStreamEncoder::AdaptCounts cpu_counts; |
| 1238 ViEEncoder::AdaptCounts quality_counts; | 1238 VideoStreamEncoder::AdaptCounts quality_counts; |
| 1239 quality_counts.resolution = 0; | 1239 quality_counts.resolution = 0; |
| 1240 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); | 1240 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); |
| 1241 EncodedImage encoded_image; | 1241 EncodedImage encoded_image; |
| 1242 for (int i = 0; i < SendStatisticsProxy::kMinRequiredMetricsSamples; ++i) | 1242 for (int i = 0; i < SendStatisticsProxy::kMinRequiredMetricsSamples; ++i) |
| 1243 statistics_proxy_->OnSendEncodedImage(encoded_image, &kDefaultCodecInfo); | 1243 statistics_proxy_->OnSendEncodedImage(encoded_image, &kDefaultCodecInfo); |
| 1244 | 1244 |
| 1245 // Histograms are updated when the statistics_proxy_ is deleted. | 1245 // Histograms are updated when the statistics_proxy_ is deleted. |
| 1246 statistics_proxy_.reset(); | 1246 statistics_proxy_.reset(); |
| 1247 EXPECT_EQ( | 1247 EXPECT_EQ( |
| 1248 1, metrics::NumSamples("WebRTC.Video.QualityLimitedResolutionInPercent")); | 1248 1, metrics::NumSamples("WebRTC.Video.QualityLimitedResolutionInPercent")); |
| 1249 EXPECT_EQ(1, metrics::NumEvents( | 1249 EXPECT_EQ(1, metrics::NumEvents( |
| 1250 "WebRTC.Video.QualityLimitedResolutionInPercent", 0)); | 1250 "WebRTC.Video.QualityLimitedResolutionInPercent", 0)); |
| 1251 // No resolution downscale. | 1251 // No resolution downscale. |
| 1252 EXPECT_EQ(0, metrics::NumSamples( | 1252 EXPECT_EQ(0, metrics::NumSamples( |
| 1253 "WebRTC.Video.QualityLimitedResolutionDownscales")); | 1253 "WebRTC.Video.QualityLimitedResolutionDownscales")); |
| 1254 } | 1254 } |
| 1255 | 1255 |
| 1256 TEST_F(SendStatisticsProxyTest, | 1256 TEST_F(SendStatisticsProxyTest, |
| 1257 QualityLimitedHistogramsUpdatedWhenEnabled_TwoResolutionDownscales) { | 1257 QualityLimitedHistogramsUpdatedWhenEnabled_TwoResolutionDownscales) { |
| 1258 const int kDownscales = 2; | 1258 const int kDownscales = 2; |
| 1259 ViEEncoder::AdaptCounts cpu_counts; | 1259 VideoStreamEncoder::AdaptCounts cpu_counts; |
| 1260 ViEEncoder::AdaptCounts quality_counts; | 1260 VideoStreamEncoder::AdaptCounts quality_counts; |
| 1261 quality_counts.resolution = kDownscales; | 1261 quality_counts.resolution = kDownscales; |
| 1262 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); | 1262 statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts); |
| 1263 EncodedImage encoded_image; | 1263 EncodedImage encoded_image; |
| 1264 for (int i = 0; i < SendStatisticsProxy::kMinRequiredMetricsSamples; ++i) | 1264 for (int i = 0; i < SendStatisticsProxy::kMinRequiredMetricsSamples; ++i) |
| 1265 statistics_proxy_->OnSendEncodedImage(encoded_image, &kDefaultCodecInfo); | 1265 statistics_proxy_->OnSendEncodedImage(encoded_image, &kDefaultCodecInfo); |
| 1266 // Histograms are updated when the statistics_proxy_ is deleted. | 1266 // Histograms are updated when the statistics_proxy_ is deleted. |
| 1267 statistics_proxy_.reset(); | 1267 statistics_proxy_.reset(); |
| 1268 EXPECT_EQ( | 1268 EXPECT_EQ( |
| 1269 1, metrics::NumSamples("WebRTC.Video.QualityLimitedResolutionInPercent")); | 1269 1, metrics::NumSamples("WebRTC.Video.QualityLimitedResolutionInPercent")); |
| 1270 EXPECT_EQ(1, metrics::NumEvents( | 1270 EXPECT_EQ(1, metrics::NumEvents( |
| (...skipping 17 matching lines...) Expand all Loading... |
| 1288 // Simulcast disabled resolutions | 1288 // Simulcast disabled resolutions |
| 1289 encoded_image.adapt_reason_.bw_resolutions_disabled = 1; | 1289 encoded_image.adapt_reason_.bw_resolutions_disabled = 1; |
| 1290 statistics_proxy_->OnSendEncodedImage(encoded_image, nullptr); | 1290 statistics_proxy_->OnSendEncodedImage(encoded_image, nullptr); |
| 1291 EXPECT_TRUE(statistics_proxy_->GetStats().bw_limited_resolution); | 1291 EXPECT_TRUE(statistics_proxy_->GetStats().bw_limited_resolution); |
| 1292 | 1292 |
| 1293 encoded_image.adapt_reason_.bw_resolutions_disabled = 0; | 1293 encoded_image.adapt_reason_.bw_resolutions_disabled = 0; |
| 1294 statistics_proxy_->OnSendEncodedImage(encoded_image, nullptr); | 1294 statistics_proxy_->OnSendEncodedImage(encoded_image, nullptr); |
| 1295 EXPECT_FALSE(statistics_proxy_->GetStats().bw_limited_resolution); | 1295 EXPECT_FALSE(statistics_proxy_->GetStats().bw_limited_resolution); |
| 1296 | 1296 |
| 1297 // Resolution scaled due to quality. | 1297 // Resolution scaled due to quality. |
| 1298 ViEEncoder::AdaptCounts cpu_counts; | 1298 VideoStreamEncoder::AdaptCounts cpu_counts; |
| 1299 ViEEncoder::AdaptCounts quality_counts; | 1299 VideoStreamEncoder::AdaptCounts quality_counts; |
| 1300 quality_counts.resolution = 1; | 1300 quality_counts.resolution = 1; |
| 1301 statistics_proxy_->OnQualityAdaptationChanged(cpu_counts, quality_counts); | 1301 statistics_proxy_->OnQualityAdaptationChanged(cpu_counts, quality_counts); |
| 1302 statistics_proxy_->OnSendEncodedImage(encoded_image, nullptr); | 1302 statistics_proxy_->OnSendEncodedImage(encoded_image, nullptr); |
| 1303 EXPECT_TRUE(statistics_proxy_->GetStats().bw_limited_resolution); | 1303 EXPECT_TRUE(statistics_proxy_->GetStats().bw_limited_resolution); |
| 1304 } | 1304 } |
| 1305 | 1305 |
| 1306 TEST_F(SendStatisticsProxyTest, GetStatsReportsTargetMediaBitrate) { | 1306 TEST_F(SendStatisticsProxyTest, GetStatsReportsTargetMediaBitrate) { |
| 1307 // Initially zero. | 1307 // Initially zero. |
| 1308 EXPECT_EQ(0, statistics_proxy_->GetStats().target_media_bitrate_bps); | 1308 EXPECT_EQ(0, statistics_proxy_->GetStats().target_media_bitrate_bps); |
| 1309 | 1309 |
| (...skipping 483 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1793 fake_clock_.AdvanceTimeMilliseconds(kPeriodIntervalMs); | 1793 fake_clock_.AdvanceTimeMilliseconds(kPeriodIntervalMs); |
| 1794 proxy->DataCountersUpdated(counters, kFirstSsrc); | 1794 proxy->DataCountersUpdated(counters, kFirstSsrc); |
| 1795 } | 1795 } |
| 1796 | 1796 |
| 1797 // FEC not enabled. | 1797 // FEC not enabled. |
| 1798 statistics_proxy_.reset(); | 1798 statistics_proxy_.reset(); |
| 1799 EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.FecBitrateSentInKbps")); | 1799 EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.FecBitrateSentInKbps")); |
| 1800 } | 1800 } |
| 1801 | 1801 |
| 1802 } // namespace webrtc | 1802 } // namespace webrtc |
| OLD | NEW |