OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2012 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 607 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
618 | 618 |
619 #endif // defined(WEBRTC_VIDEOPROCESSOR_H264_TESTS) | 619 #endif // defined(WEBRTC_VIDEOPROCESSOR_H264_TESTS) |
620 | 620 |
621 // Fails on iOS. See webrtc:4755. | 621 // Fails on iOS. See webrtc:4755. |
622 #if !defined(WEBRTC_IOS) | 622 #if !defined(WEBRTC_IOS) |
623 | 623 |
624 #if !defined(RTC_DISABLE_VP9) | 624 #if !defined(RTC_DISABLE_VP9) |
625 // VP9: Run with no packet loss and fixed bitrate. Quality should be very high. | 625 // VP9: Run with no packet loss and fixed bitrate. Quality should be very high. |
626 // One key frame (first frame only) in sequence. Setting |key_frame_interval| | 626 // One key frame (first frame only) in sequence. Setting |key_frame_interval| |
627 // to -1 below means no periodic key frames in test. | 627 // to -1 below means no periodic key frames in test. |
628 TEST_F(VideoProcessorIntegrationTest, Process0PercentPacketLossVP9) { | 628 |
| 629 #if defined(THREAD_SANITIZER) || defined(UNDEFINED_SANITIZER) |
| 630 // Fails on TSan and UBSan: https://bugs.webrtc.org/6781. |
| 631 #define MAYBE_Process0PercentPacketLossVP9 DISABLED_Process0PercentPacketLossVP9 |
| 632 #else |
| 633 #define MAYBE_Process0PercentPacketLossVP9 Process0PercentPacketLossVP9 |
| 634 #endif |
| 635 TEST_F(VideoProcessorIntegrationTest, MAYBE_Process0PercentPacketLossVP9) { |
629 // Bitrate and frame rate profile. | 636 // Bitrate and frame rate profile. |
630 RateProfile rate_profile; | 637 RateProfile rate_profile; |
631 SetRateProfilePars(&rate_profile, 0, 500, 30, 0); | 638 SetRateProfilePars(&rate_profile, 0, 500, 30, 0); |
632 rate_profile.frame_index_rate_update[1] = kNbrFramesShort + 1; | 639 rate_profile.frame_index_rate_update[1] = kNbrFramesShort + 1; |
633 rate_profile.num_frames = kNbrFramesShort; | 640 rate_profile.num_frames = kNbrFramesShort; |
634 // Codec/network settings. | 641 // Codec/network settings. |
635 CodecConfigPars process_settings; | 642 CodecConfigPars process_settings; |
636 SetCodecParameters(&process_settings, kVideoCodecVP9, 0.0f, -1, 1, false, | 643 SetCodecParameters(&process_settings, kVideoCodecVP9, 0.0f, -1, 1, false, |
637 false, true, false); | 644 false, true, false); |
638 // Metrics for expected quality. | 645 // Metrics for expected quality. |
(...skipping 25 matching lines...) Expand all Loading... |
664 RateControlMetrics rc_metrics[1]; | 671 RateControlMetrics rc_metrics[1]; |
665 SetRateControlMetrics(rc_metrics, 0, 0, 40, 20, 10, 20, 0, 1); | 672 SetRateControlMetrics(rc_metrics, 0, 0, 40, 20, 10, 20, 0, 1); |
666 ProcessFramesAndVerify(quality_metrics, rate_profile, process_settings, | 673 ProcessFramesAndVerify(quality_metrics, rate_profile, process_settings, |
667 rc_metrics); | 674 rc_metrics); |
668 } | 675 } |
669 | 676 |
670 // VP9: Run with no packet loss, with varying bitrate (3 rate updates): | 677 // VP9: Run with no packet loss, with varying bitrate (3 rate updates): |
671 // low to high to medium. Check that quality and encoder response to the new | 678 // low to high to medium. Check that quality and encoder response to the new |
672 // target rate/per-frame bandwidth (for each rate update) is within limits. | 679 // target rate/per-frame bandwidth (for each rate update) is within limits. |
673 // One key frame (first frame only) in sequence. | 680 // One key frame (first frame only) in sequence. |
674 TEST_F(VideoProcessorIntegrationTest, ProcessNoLossChangeBitRateVP9) { | 681 #if defined(THREAD_SANITIZER) || defined(UNDEFINED_SANITIZER) |
| 682 // Fails on TSan and UBSan: https://bugs.webrtc.org/6781. |
| 683 #define MAYBE_ProcessNoLossChangeBitRateVP9 \ |
| 684 DISABLED_ProcessNoLossChangeBitRateVP9 |
| 685 #else |
| 686 #define MAYBE_ProcessNoLossChangeBitRateVP9 ProcessNoLossChangeBitRateVP9 |
| 687 #endif |
| 688 TEST_F(VideoProcessorIntegrationTest, MAYBE_ProcessNoLossChangeBitRateVP9) { |
675 // Bitrate and frame rate profile. | 689 // Bitrate and frame rate profile. |
676 RateProfile rate_profile; | 690 RateProfile rate_profile; |
677 SetRateProfilePars(&rate_profile, 0, 200, 30, 0); | 691 SetRateProfilePars(&rate_profile, 0, 200, 30, 0); |
678 SetRateProfilePars(&rate_profile, 1, 700, 30, 100); | 692 SetRateProfilePars(&rate_profile, 1, 700, 30, 100); |
679 SetRateProfilePars(&rate_profile, 2, 500, 30, 200); | 693 SetRateProfilePars(&rate_profile, 2, 500, 30, 200); |
680 rate_profile.frame_index_rate_update[3] = kNbrFramesLong + 1; | 694 rate_profile.frame_index_rate_update[3] = kNbrFramesLong + 1; |
681 rate_profile.num_frames = kNbrFramesLong; | 695 rate_profile.num_frames = kNbrFramesLong; |
682 // Codec/network settings. | 696 // Codec/network settings. |
683 CodecConfigPars process_settings; | 697 CodecConfigPars process_settings; |
684 SetCodecParameters(&process_settings, kVideoCodecVP9, 0.0f, -1, 1, false, | 698 SetCodecParameters(&process_settings, kVideoCodecVP9, 0.0f, -1, 1, false, |
(...skipping 11 matching lines...) Expand all Loading... |
696 } | 710 } |
697 | 711 |
698 // VP9: Run with no packet loss, with an update (decrease) in frame rate. | 712 // VP9: Run with no packet loss, with an update (decrease) in frame rate. |
699 // Lower frame rate means higher per-frame-bandwidth, so easier to encode. | 713 // Lower frame rate means higher per-frame-bandwidth, so easier to encode. |
700 // At the low bitrate in this test, this means better rate control after the | 714 // At the low bitrate in this test, this means better rate control after the |
701 // update(s) to lower frame rate. So expect less frame drops, and max values | 715 // update(s) to lower frame rate. So expect less frame drops, and max values |
702 // for the rate control metrics can be lower. One key frame (first frame only). | 716 // for the rate control metrics can be lower. One key frame (first frame only). |
703 // Note: quality after update should be higher but we currently compute quality | 717 // Note: quality after update should be higher but we currently compute quality |
704 // metrics averaged over whole sequence run. | 718 // metrics averaged over whole sequence run. |
705 | 719 |
706 #if defined(WEBRTC_ANDROID) | 720 #if defined(WEBRTC_ANDROID) || defined(THREAD_SANITIZER) || \ |
| 721 defined(UNDEFINED_SANITIZER) |
707 // Flaky on Android: https://bugs.chromium.org/p/webrtc/issues/detail?id=6057. | 722 // Flaky on Android: https://bugs.chromium.org/p/webrtc/issues/detail?id=6057. |
| 723 // Fails on TSan and UBSan: https://bugs.webrtc.org/6781. |
708 #define MAYBE_ProcessNoLossChangeFrameRateFrameDropVP9 \ | 724 #define MAYBE_ProcessNoLossChangeFrameRateFrameDropVP9 \ |
709 DISABLED_ProcessNoLossChangeFrameRateFrameDropVP9 | 725 DISABLED_ProcessNoLossChangeFrameRateFrameDropVP9 |
710 #else | 726 #else |
711 #define MAYBE_ProcessNoLossChangeFrameRateFrameDropVP9 \ | 727 #define MAYBE_ProcessNoLossChangeFrameRateFrameDropVP9 \ |
712 ProcessNoLossChangeFrameRateFrameDropVP9 | 728 ProcessNoLossChangeFrameRateFrameDropVP9 |
713 #endif | 729 #endif |
714 TEST_F(VideoProcessorIntegrationTest, | 730 TEST_F(VideoProcessorIntegrationTest, |
715 MAYBE_ProcessNoLossChangeFrameRateFrameDropVP9) { | 731 MAYBE_ProcessNoLossChangeFrameRateFrameDropVP9) { |
716 config_.networking_config.packet_loss_probability = 0; | 732 config_.networking_config.packet_loss_probability = 0; |
717 // Bitrate and frame rate profile. | 733 // Bitrate and frame rate profile. |
(...skipping 13 matching lines...) Expand all Loading... |
731 // Metrics for rate control. | 747 // Metrics for rate control. |
732 RateControlMetrics rc_metrics[3]; | 748 RateControlMetrics rc_metrics[3]; |
733 SetRateControlMetrics(rc_metrics, 0, 38, 50, 75, 15, 45, 0, 1); | 749 SetRateControlMetrics(rc_metrics, 0, 38, 50, 75, 15, 45, 0, 1); |
734 SetRateControlMetrics(rc_metrics, 1, 10, 0, 40, 10, 30, 0, 0); | 750 SetRateControlMetrics(rc_metrics, 1, 10, 0, 40, 10, 30, 0, 0); |
735 SetRateControlMetrics(rc_metrics, 2, 5, 0, 30, 5, 20, 0, 0); | 751 SetRateControlMetrics(rc_metrics, 2, 5, 0, 30, 5, 20, 0, 0); |
736 ProcessFramesAndVerify(quality_metrics, rate_profile, process_settings, | 752 ProcessFramesAndVerify(quality_metrics, rate_profile, process_settings, |
737 rc_metrics); | 753 rc_metrics); |
738 } | 754 } |
739 | 755 |
740 // VP9: Run with no packet loss and denoiser on. One key frame (first frame). | 756 // VP9: Run with no packet loss and denoiser on. One key frame (first frame). |
741 TEST_F(VideoProcessorIntegrationTest, ProcessNoLossDenoiserOnVP9) { | 757 #if defined(THREAD_SANITIZER) || defined(UNDEFINED_SANITIZER) |
| 758 // Fails on TSan and UBSan: https://bugs.webrtc.org/6781. |
| 759 #define MAYBE_ProcessNoLossDenoiserOnVP9 DISABLED_ProcessNoLossDenoiserOnVP9 |
| 760 #else |
| 761 #define MAYBE_ProcessNoLossDenoiserOnVP9 ProcessNoLossDenoiserOnVP9 |
| 762 #endif |
| 763 TEST_F(VideoProcessorIntegrationTest, MAYBE_ProcessNoLossDenoiserOnVP9) { |
742 // Bitrate and frame rate profile. | 764 // Bitrate and frame rate profile. |
743 RateProfile rate_profile; | 765 RateProfile rate_profile; |
744 SetRateProfilePars(&rate_profile, 0, 500, 30, 0); | 766 SetRateProfilePars(&rate_profile, 0, 500, 30, 0); |
745 rate_profile.frame_index_rate_update[1] = kNbrFramesShort + 1; | 767 rate_profile.frame_index_rate_update[1] = kNbrFramesShort + 1; |
746 rate_profile.num_frames = kNbrFramesShort; | 768 rate_profile.num_frames = kNbrFramesShort; |
747 // Codec/network settings. | 769 // Codec/network settings. |
748 CodecConfigPars process_settings; | 770 CodecConfigPars process_settings; |
749 SetCodecParameters(&process_settings, kVideoCodecVP9, 0.0f, -1, 1, false, | 771 SetCodecParameters(&process_settings, kVideoCodecVP9, 0.0f, -1, 1, false, |
750 true, true, false); | 772 true, true, false); |
751 // Metrics for expected quality. | 773 // Metrics for expected quality. |
752 QualityMetrics quality_metrics; | 774 QualityMetrics quality_metrics; |
753 SetQualityMetrics(&quality_metrics, 36.8, 35.8, 0.92, 0.91); | 775 SetQualityMetrics(&quality_metrics, 36.8, 35.8, 0.92, 0.91); |
754 // Metrics for rate control. | 776 // Metrics for rate control. |
755 RateControlMetrics rc_metrics[1]; | 777 RateControlMetrics rc_metrics[1]; |
756 SetRateControlMetrics(rc_metrics, 0, 0, 40, 20, 10, 20, 0, 1); | 778 SetRateControlMetrics(rc_metrics, 0, 0, 40, 20, 10, 20, 0, 1); |
757 ProcessFramesAndVerify(quality_metrics, rate_profile, process_settings, | 779 ProcessFramesAndVerify(quality_metrics, rate_profile, process_settings, |
758 rc_metrics); | 780 rc_metrics); |
759 } | 781 } |
760 | 782 |
761 // Run with no packet loss, at low bitrate. | 783 // Run with no packet loss, at low bitrate. |
762 // spatial_resize is on, for this low bitrate expect one resize in sequence. | 784 // spatial_resize is on, for this low bitrate expect one resize in sequence. |
763 // Resize happens on delta frame. Expect only one key frame (first frame). | 785 // Resize happens on delta frame. Expect only one key frame (first frame). |
764 TEST_F(VideoProcessorIntegrationTest, ProcessNoLossSpatialResizeFrameDropVP9) { | 786 #if defined(THREAD_SANITIZER) || defined(UNDEFINED_SANITIZER) |
| 787 // Fails on TSan and UBSan: https://bugs.webrtc.org/6781. |
| 788 #define MAYBE_ProcessNoLossSpatialResizeFrameDropVP9 \ |
| 789 DISABLED_ProcessNoLossSpatialResizeFrameDropVP9 |
| 790 #else |
| 791 #define MAYBE_ProcessNoLossSpatialResizeFrameDropVP9 \ |
| 792 ProcessNoLossSpatialResizeFrameDropVP9 |
| 793 #endif |
| 794 TEST_F(VideoProcessorIntegrationTest, |
| 795 MAYBE_ProcessNoLossSpatialResizeFrameDropVP9) { |
765 config_.networking_config.packet_loss_probability = 0; | 796 config_.networking_config.packet_loss_probability = 0; |
766 // Bitrate and frame rate profile. | 797 // Bitrate and frame rate profile. |
767 RateProfile rate_profile; | 798 RateProfile rate_profile; |
768 SetRateProfilePars(&rate_profile, 0, 50, 30, 0); | 799 SetRateProfilePars(&rate_profile, 0, 50, 30, 0); |
769 rate_profile.frame_index_rate_update[1] = kNbrFramesLong + 1; | 800 rate_profile.frame_index_rate_update[1] = kNbrFramesLong + 1; |
770 rate_profile.num_frames = kNbrFramesLong; | 801 rate_profile.num_frames = kNbrFramesLong; |
771 // Codec/network settings. | 802 // Codec/network settings. |
772 CodecConfigPars process_settings; | 803 CodecConfigPars process_settings; |
773 SetCodecParameters(&process_settings, kVideoCodecVP9, 0.0f, -1, 1, false, | 804 SetCodecParameters(&process_settings, kVideoCodecVP9, 0.0f, -1, 1, false, |
774 false, true, true); | 805 false, true, true); |
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1001 QualityMetrics quality_metrics; | 1032 QualityMetrics quality_metrics; |
1002 SetQualityMetrics(&quality_metrics, 32.5, 30.0, 0.85, 0.80); | 1033 SetQualityMetrics(&quality_metrics, 32.5, 30.0, 0.85, 0.80); |
1003 // Metrics for rate control. | 1034 // Metrics for rate control. |
1004 RateControlMetrics rc_metrics[2]; | 1035 RateControlMetrics rc_metrics[2]; |
1005 SetRateControlMetrics(rc_metrics, 0, 0, 20, 30, 10, 10, 0, 1); | 1036 SetRateControlMetrics(rc_metrics, 0, 0, 20, 30, 10, 10, 0, 1); |
1006 SetRateControlMetrics(rc_metrics, 1, 0, 0, 30, 15, 10, 0, 0); | 1037 SetRateControlMetrics(rc_metrics, 1, 0, 0, 30, 15, 10, 0, 0); |
1007 ProcessFramesAndVerify(quality_metrics, rate_profile, process_settings, | 1038 ProcessFramesAndVerify(quality_metrics, rate_profile, process_settings, |
1008 rc_metrics); | 1039 rc_metrics); |
1009 } | 1040 } |
1010 } // namespace webrtc | 1041 } // namespace webrtc |
OLD | NEW |