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

Side by Side Diff: video/end_to_end_tests.cc

Issue 3019453002: Delete member VideoReceiveStream::Config::Rtp::ulpfec. (Closed)
Patch Set: Added DCHECK. Created 3 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « media/engine/webrtcvideoengine_unittest.cc ('k') | video/receive_statistics_proxy.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #include <algorithm> 10 #include <algorithm>
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 bool need_rtp_; 133 bool need_rtp_;
134 bool need_rtcp_; 134 bool need_rtcp_;
135 rtc::CriticalSection crit_; 135 rtc::CriticalSection crit_;
136 }; 136 };
137 137
138 void DecodesRetransmittedFrame(bool enable_rtx, bool enable_red); 138 void DecodesRetransmittedFrame(bool enable_rtx, bool enable_red);
139 void ReceivesPliAndRecovers(int rtp_history_ms); 139 void ReceivesPliAndRecovers(int rtp_history_ms);
140 void RespectsRtcpMode(RtcpMode rtcp_mode); 140 void RespectsRtcpMode(RtcpMode rtcp_mode);
141 void TestSendsSetSsrcs(size_t num_ssrcs, bool send_single_ssrc_first); 141 void TestSendsSetSsrcs(size_t num_ssrcs, bool send_single_ssrc_first);
142 void TestRtpStatePreservation(bool use_rtx, bool provoke_rtcpsr_before_rtp); 142 void TestRtpStatePreservation(bool use_rtx, bool provoke_rtcpsr_before_rtp);
143 void VerifyHistogramStats(bool use_rtx, bool use_red, bool screenshare); 143 void VerifyHistogramStats(bool use_rtx, bool use_fec, bool screenshare);
144 void VerifyNewVideoSendStreamsRespectNetworkState( 144 void VerifyNewVideoSendStreamsRespectNetworkState(
145 MediaType network_to_bring_up, 145 MediaType network_to_bring_up,
146 VideoEncoder* encoder, 146 VideoEncoder* encoder,
147 Transport* transport); 147 Transport* transport);
148 void VerifyNewVideoReceiveStreamsRespectNetworkState( 148 void VerifyNewVideoReceiveStreamsRespectNetworkState(
149 MediaType network_to_bring_up, 149 MediaType network_to_bring_up,
150 Transport* transport); 150 Transport* transport);
151 }; 151 };
152 152
153 TEST_F(EndToEndTest, ReceiverCanBeStartedTwice) { 153 TEST_F(EndToEndTest, ReceiverCanBeStartedTwice) {
(...skipping 535 matching lines...) Expand 10 before | Expand all | Expand 10 after
689 send_config->encoder_settings.payload_type = kVideoSendPayloadType; 689 send_config->encoder_settings.payload_type = kVideoSendPayloadType;
690 VideoReceiveStream::Decoder decoder = 690 VideoReceiveStream::Decoder decoder =
691 test::CreateMatchingDecoder(send_config->encoder_settings); 691 test::CreateMatchingDecoder(send_config->encoder_settings);
692 decoder_.reset(decoder.decoder); 692 decoder_.reset(decoder.decoder);
693 (*receive_configs)[0].decoders.clear(); 693 (*receive_configs)[0].decoders.clear();
694 (*receive_configs)[0].decoders.push_back(decoder); 694 (*receive_configs)[0].decoders.push_back(decoder);
695 695
696 // Enable ULPFEC over RED. 696 // Enable ULPFEC over RED.
697 send_config->rtp.ulpfec.red_payload_type = kRedPayloadType; 697 send_config->rtp.ulpfec.red_payload_type = kRedPayloadType;
698 send_config->rtp.ulpfec.ulpfec_payload_type = kUlpfecPayloadType; 698 send_config->rtp.ulpfec.ulpfec_payload_type = kUlpfecPayloadType;
699 (*receive_configs)[0].rtp.ulpfec.red_payload_type = kRedPayloadType; 699 (*receive_configs)[0].rtp.red_payload_type = kRedPayloadType;
700 (*receive_configs)[0].rtp.ulpfec.ulpfec_payload_type = kUlpfecPayloadType; 700 (*receive_configs)[0].rtp.ulpfec_payload_type = kUlpfecPayloadType;
701 701
702 (*receive_configs)[0].renderer = this; 702 (*receive_configs)[0].renderer = this;
703 } 703 }
704 704
705 void PerformTest() override { 705 void PerformTest() override {
706 EXPECT_TRUE(Wait()) 706 EXPECT_TRUE(Wait())
707 << "Timed out waiting for dropped frames to be rendered."; 707 << "Timed out waiting for dropped frames to be rendered.";
708 } 708 }
709 709
710 rtc::CriticalSection crit_; 710 rtc::CriticalSection crit_;
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
846 846
847 void ModifyVideoConfigs( 847 void ModifyVideoConfigs(
848 VideoSendStream::Config* send_config, 848 VideoSendStream::Config* send_config,
849 std::vector<VideoReceiveStream::Config>* receive_configs, 849 std::vector<VideoReceiveStream::Config>* receive_configs,
850 VideoEncoderConfig* encoder_config) override { 850 VideoEncoderConfig* encoder_config) override {
851 (*receive_configs)[0].rtp.local_ssrc = kVideoLocalSsrc; 851 (*receive_configs)[0].rtp.local_ssrc = kVideoLocalSsrc;
852 (*receive_configs)[0].renderer = this; 852 (*receive_configs)[0].renderer = this;
853 853
854 if (enable_nack_) { 854 if (enable_nack_) {
855 send_config->rtp.nack.rtp_history_ms = test::CallTest::kNackRtpHistoryMs; 855 send_config->rtp.nack.rtp_history_ms = test::CallTest::kNackRtpHistoryMs;
856 send_config->rtp.ulpfec.red_rtx_payload_type =
857 test::CallTest::kRtxRedPayloadType;
858 send_config->rtp.rtx.ssrcs.push_back(test::CallTest::kSendRtxSsrcs[0]); 856 send_config->rtp.rtx.ssrcs.push_back(test::CallTest::kSendRtxSsrcs[0]);
859 send_config->rtp.rtx.payload_type = test::CallTest::kSendRtxPayloadType; 857 send_config->rtp.rtx.payload_type = test::CallTest::kSendRtxPayloadType;
860 858
861 (*receive_configs)[0].rtp.nack.rtp_history_ms = 859 (*receive_configs)[0].rtp.nack.rtp_history_ms =
862 test::CallTest::kNackRtpHistoryMs; 860 test::CallTest::kNackRtpHistoryMs;
863 (*receive_configs)[0].rtp.ulpfec.red_rtx_payload_type =
864 test::CallTest::kRtxRedPayloadType;
865
866 (*receive_configs)[0].rtp.rtx_ssrc = test::CallTest::kSendRtxSsrcs[0]; 861 (*receive_configs)[0].rtp.rtx_ssrc = test::CallTest::kSendRtxSsrcs[0];
867 (*receive_configs)[0] 862 (*receive_configs)[0]
868 .rtp 863 .rtp
869 .rtx_associated_payload_types[test::CallTest::kSendRtxPayloadType] = 864 .rtx_associated_payload_types[test::CallTest::kSendRtxPayloadType] =
870 test::CallTest::kVideoSendPayloadType; 865 test::CallTest::kVideoSendPayloadType;
871 } 866 }
872 } 867 }
873 868
874 void OnFrameGeneratorCapturerCreated( 869 void OnFrameGeneratorCapturerCreated(
875 test::FrameGeneratorCapturer* frame_generator_capturer) override { 870 test::FrameGeneratorCapturer* frame_generator_capturer) override {
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
1036 // Configure hybrid NACK/FEC. 1031 // Configure hybrid NACK/FEC.
1037 send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs; 1032 send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs;
1038 send_config->rtp.ulpfec.red_payload_type = kRedPayloadType; 1033 send_config->rtp.ulpfec.red_payload_type = kRedPayloadType;
1039 send_config->rtp.ulpfec.ulpfec_payload_type = kUlpfecPayloadType; 1034 send_config->rtp.ulpfec.ulpfec_payload_type = kUlpfecPayloadType;
1040 // Set codec to VP8, otherwise NACK/FEC hybrid will be disabled. 1035 // Set codec to VP8, otherwise NACK/FEC hybrid will be disabled.
1041 send_config->encoder_settings.encoder = encoder_.get(); 1036 send_config->encoder_settings.encoder = encoder_.get();
1042 send_config->encoder_settings.payload_name = "VP8"; 1037 send_config->encoder_settings.payload_name = "VP8";
1043 send_config->encoder_settings.payload_type = kFakeVideoSendPayloadType; 1038 send_config->encoder_settings.payload_type = kFakeVideoSendPayloadType;
1044 1039
1045 (*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; 1040 (*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs;
1046 (*receive_configs)[0].rtp.ulpfec.red_payload_type = kRedPayloadType; 1041 (*receive_configs)[0].rtp.red_payload_type = kRedPayloadType;
1047 (*receive_configs)[0].rtp.ulpfec.ulpfec_payload_type = kUlpfecPayloadType; 1042 (*receive_configs)[0].rtp.ulpfec_payload_type = kUlpfecPayloadType;
1048 1043
1049 (*receive_configs)[0].decoders.resize(1); 1044 (*receive_configs)[0].decoders.resize(1);
1050 (*receive_configs)[0].decoders[0].payload_type = 1045 (*receive_configs)[0].decoders[0].payload_type =
1051 send_config->encoder_settings.payload_type; 1046 send_config->encoder_settings.payload_type;
1052 (*receive_configs)[0].decoders[0].payload_name = 1047 (*receive_configs)[0].decoders[0].payload_name =
1053 send_config->encoder_settings.payload_name; 1048 send_config->encoder_settings.payload_name;
1054 (*receive_configs)[0].decoders[0].decoder = decoder_.get(); 1049 (*receive_configs)[0].decoders[0].decoder = decoder_.get();
1055 } 1050 }
1056 1051
1057 void PerformTest() override { 1052 void PerformTest() override {
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
1164 (*receive_configs)[0].disable_prerenderer_smoothing = true; 1159 (*receive_configs)[0].disable_prerenderer_smoothing = true;
1165 (*receive_configs)[0].renderer = this; 1160 (*receive_configs)[0].renderer = this;
1166 1161
1167 (*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; 1162 (*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs;
1168 1163
1169 if (payload_type_ == kRedPayloadType) { 1164 if (payload_type_ == kRedPayloadType) {
1170 send_config->rtp.ulpfec.ulpfec_payload_type = kUlpfecPayloadType; 1165 send_config->rtp.ulpfec.ulpfec_payload_type = kUlpfecPayloadType;
1171 send_config->rtp.ulpfec.red_payload_type = kRedPayloadType; 1166 send_config->rtp.ulpfec.red_payload_type = kRedPayloadType;
1172 if (retransmission_ssrc_ == kSendRtxSsrcs[0]) 1167 if (retransmission_ssrc_ == kSendRtxSsrcs[0])
1173 send_config->rtp.ulpfec.red_rtx_payload_type = kRtxRedPayloadType; 1168 send_config->rtp.ulpfec.red_rtx_payload_type = kRtxRedPayloadType;
1174 (*receive_configs)[0].rtp.ulpfec.ulpfec_payload_type = 1169 (*receive_configs)[0].rtp.ulpfec_payload_type =
1175 send_config->rtp.ulpfec.ulpfec_payload_type; 1170 send_config->rtp.ulpfec.ulpfec_payload_type;
1176 (*receive_configs)[0].rtp.ulpfec.red_payload_type = 1171 (*receive_configs)[0].rtp.red_payload_type =
1177 send_config->rtp.ulpfec.red_payload_type; 1172 send_config->rtp.ulpfec.red_payload_type;
1178 (*receive_configs)[0].rtp.ulpfec.red_rtx_payload_type =
1179 send_config->rtp.ulpfec.red_rtx_payload_type;
1180 } 1173 }
1181 1174
1182 if (retransmission_ssrc_ == kSendRtxSsrcs[0]) { 1175 if (retransmission_ssrc_ == kSendRtxSsrcs[0]) {
1183 send_config->rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[0]); 1176 send_config->rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[0]);
1184 send_config->rtp.rtx.payload_type = kSendRtxPayloadType; 1177 send_config->rtp.rtx.payload_type = kSendRtxPayloadType;
1185 (*receive_configs)[0].rtp.rtx_ssrc = kSendRtxSsrcs[0]; 1178 (*receive_configs)[0].rtp.rtx_ssrc = kSendRtxSsrcs[0];
1186 (*receive_configs)[0] 1179 (*receive_configs)[0]
1187 .rtp.rtx_associated_payload_types[(payload_type_ == kRedPayloadType) 1180 .rtp.rtx_associated_payload_types[(payload_type_ == kRedPayloadType)
1188 ? kRtxRedPayloadType 1181 ? kRtxRedPayloadType
1189 : kSendRtxPayloadType] = 1182 : kSendRtxPayloadType] =
(...skipping 10 matching lines...) Expand all
1200 void OnFrameGeneratorCapturerCreated( 1193 void OnFrameGeneratorCapturerCreated(
1201 test::FrameGeneratorCapturer* frame_generator_capturer) override { 1194 test::FrameGeneratorCapturer* frame_generator_capturer) override {
1202 frame_generator_capturer->SetFakeRotation(kVideoRotation_90); 1195 frame_generator_capturer->SetFakeRotation(kVideoRotation_90);
1203 } 1196 }
1204 1197
1205 void PerformTest() override { 1198 void PerformTest() override {
1206 EXPECT_TRUE(Wait()) 1199 EXPECT_TRUE(Wait())
1207 << "Timed out while waiting for retransmission to render."; 1200 << "Timed out while waiting for retransmission to render.";
1208 } 1201 }
1209 1202
1210 int GetPayloadType(bool use_rtx, bool use_red) { 1203 int GetPayloadType(bool use_rtx, bool use_fec) {
1211 if (use_red) { 1204 if (use_fec) {
1212 if (use_rtx) 1205 if (use_rtx)
1213 return kRtxRedPayloadType; 1206 return kRtxRedPayloadType;
1214 return kRedPayloadType; 1207 return kRedPayloadType;
1215 } 1208 }
1216 if (use_rtx) 1209 if (use_rtx)
1217 return kSendRtxPayloadType; 1210 return kSendRtxPayloadType;
1218 return kFakeVideoSendPayloadType; 1211 return kFakeVideoSendPayloadType;
1219 } 1212 }
1220 1213
1221 rtc::CriticalSection crit_; 1214 rtc::CriticalSection crit_;
(...skipping 1471 matching lines...) Expand 10 before | Expand all | Expand 10 after
2693 RunBaseTest(&test); 2686 RunBaseTest(&test);
2694 2687
2695 EXPECT_EQ( 2688 EXPECT_EQ(
2696 1, metrics::NumSamples("WebRTC.Video.UniqueNackRequestsSentInPercent")); 2689 1, metrics::NumSamples("WebRTC.Video.UniqueNackRequestsSentInPercent"));
2697 EXPECT_EQ(1, metrics::NumSamples( 2690 EXPECT_EQ(1, metrics::NumSamples(
2698 "WebRTC.Video.UniqueNackRequestsReceivedInPercent")); 2691 "WebRTC.Video.UniqueNackRequestsReceivedInPercent"));
2699 EXPECT_GT(metrics::MinSample("WebRTC.Video.NackPacketsSentPerMinute"), 0); 2692 EXPECT_GT(metrics::MinSample("WebRTC.Video.NackPacketsSentPerMinute"), 0);
2700 } 2693 }
2701 2694
2702 void EndToEndTest::VerifyHistogramStats(bool use_rtx, 2695 void EndToEndTest::VerifyHistogramStats(bool use_rtx,
2703 bool use_red, 2696 bool use_fec,
2704 bool screenshare) { 2697 bool screenshare) {
2705 class StatsObserver : public test::EndToEndTest, 2698 class StatsObserver : public test::EndToEndTest,
2706 public rtc::VideoSinkInterface<VideoFrame> { 2699 public rtc::VideoSinkInterface<VideoFrame> {
2707 public: 2700 public:
2708 StatsObserver(bool use_rtx, bool use_red, bool screenshare) 2701 StatsObserver(bool use_rtx, bool use_fec, bool screenshare)
2709 : EndToEndTest(kLongTimeoutMs), 2702 : EndToEndTest(kLongTimeoutMs),
2710 use_rtx_(use_rtx), 2703 use_rtx_(use_rtx),
2711 use_red_(use_red), 2704 use_fec_(use_fec),
2712 screenshare_(screenshare), 2705 screenshare_(screenshare),
2713 // This test uses NACK, so to send FEC we can't use a fake encoder. 2706 // This test uses NACK, so to send FEC we can't use a fake encoder.
2714 vp8_encoder_(use_red ? VP8Encoder::Create() : nullptr), 2707 vp8_encoder_(use_fec ? VP8Encoder::Create() : nullptr),
2715 sender_call_(nullptr), 2708 sender_call_(nullptr),
2716 receiver_call_(nullptr), 2709 receiver_call_(nullptr),
2717 start_runtime_ms_(-1), 2710 start_runtime_ms_(-1),
2718 num_frames_received_(0) {} 2711 num_frames_received_(0) {}
2719 2712
2720 private: 2713 private:
2721 void OnFrame(const VideoFrame& video_frame) override { 2714 void OnFrame(const VideoFrame& video_frame) override {
2722 // The RTT is needed to estimate |ntp_time_ms| which is used by 2715 // The RTT is needed to estimate |ntp_time_ms| which is used by
2723 // end-to-end delay stats. Therefore, start counting received frames once 2716 // end-to-end delay stats. Therefore, start counting received frames once
2724 // |ntp_time_ms| is valid. 2717 // |ntp_time_ms| is valid.
(...skipping 30 matching lines...) Expand all
2755 2748
2756 void ModifyVideoConfigs( 2749 void ModifyVideoConfigs(
2757 VideoSendStream::Config* send_config, 2750 VideoSendStream::Config* send_config,
2758 std::vector<VideoReceiveStream::Config>* receive_configs, 2751 std::vector<VideoReceiveStream::Config>* receive_configs,
2759 VideoEncoderConfig* encoder_config) override { 2752 VideoEncoderConfig* encoder_config) override {
2760 // NACK 2753 // NACK
2761 send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs; 2754 send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs;
2762 (*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; 2755 (*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs;
2763 (*receive_configs)[0].renderer = this; 2756 (*receive_configs)[0].renderer = this;
2764 // FEC 2757 // FEC
2765 if (use_red_) { 2758 if (use_fec_) {
2766 send_config->rtp.ulpfec.ulpfec_payload_type = kUlpfecPayloadType; 2759 send_config->rtp.ulpfec.ulpfec_payload_type = kUlpfecPayloadType;
2767 send_config->rtp.ulpfec.red_payload_type = kRedPayloadType; 2760 send_config->rtp.ulpfec.red_payload_type = kRedPayloadType;
2768 send_config->encoder_settings.encoder = vp8_encoder_.get(); 2761 send_config->encoder_settings.encoder = vp8_encoder_.get();
2769 send_config->encoder_settings.payload_name = "VP8"; 2762 send_config->encoder_settings.payload_name = "VP8";
2770 (*receive_configs)[0].decoders[0].payload_name = "VP8"; 2763 (*receive_configs)[0].decoders[0].payload_name = "VP8";
2771 (*receive_configs)[0].rtp.ulpfec.red_payload_type = kRedPayloadType; 2764 (*receive_configs)[0].rtp.red_payload_type = kRedPayloadType;
2772 (*receive_configs)[0].rtp.ulpfec.ulpfec_payload_type = 2765 (*receive_configs)[0].rtp.ulpfec_payload_type = kUlpfecPayloadType;
2773 kUlpfecPayloadType;
2774 } 2766 }
2775 // RTX 2767 // RTX
2776 if (use_rtx_) { 2768 if (use_rtx_) {
2777 send_config->rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[0]); 2769 send_config->rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[0]);
2778 send_config->rtp.rtx.payload_type = kSendRtxPayloadType; 2770 send_config->rtp.rtx.payload_type = kSendRtxPayloadType;
2779 (*receive_configs)[0].rtp.rtx_ssrc = kSendRtxSsrcs[0]; 2771 (*receive_configs)[0].rtp.rtx_ssrc = kSendRtxSsrcs[0];
2780 (*receive_configs)[0] 2772 (*receive_configs)[0]
2781 .rtp.rtx_associated_payload_types[kSendRtxPayloadType] = 2773 .rtp.rtx_associated_payload_types[kSendRtxPayloadType] =
2782 kFakeVideoSendPayloadType; 2774 kFakeVideoSendPayloadType;
2775 if (use_fec_) {
2776 send_config->rtp.ulpfec.red_rtx_payload_type = kRtxRedPayloadType;
2777 (*receive_configs)[0]
2778 .rtp.rtx_associated_payload_types[kRtxRedPayloadType] =
2779 kSendRtxPayloadType;
2780 }
2783 } 2781 }
2784 // RTT needed for RemoteNtpTimeEstimator for the receive stream. 2782 // RTT needed for RemoteNtpTimeEstimator for the receive stream.
2785 (*receive_configs)[0].rtp.rtcp_xr.receiver_reference_time_report = true; 2783 (*receive_configs)[0].rtp.rtcp_xr.receiver_reference_time_report = true;
2786 encoder_config->content_type = 2784 encoder_config->content_type =
2787 screenshare_ ? VideoEncoderConfig::ContentType::kScreen 2785 screenshare_ ? VideoEncoderConfig::ContentType::kScreen
2788 : VideoEncoderConfig::ContentType::kRealtimeVideo; 2786 : VideoEncoderConfig::ContentType::kRealtimeVideo;
2789 } 2787 }
2790 2788
2791 void OnCallsCreated(Call* sender_call, Call* receiver_call) override { 2789 void OnCallsCreated(Call* sender_call, Call* receiver_call) override {
2792 sender_call_ = sender_call; 2790 sender_call_ = sender_call;
2793 receiver_call_ = receiver_call; 2791 receiver_call_ = receiver_call;
2794 } 2792 }
2795 2793
2796 void PerformTest() override { 2794 void PerformTest() override {
2797 EXPECT_TRUE(Wait()) << "Timed out waiting for packet to be NACKed."; 2795 EXPECT_TRUE(Wait()) << "Timed out waiting for packet to be NACKed.";
2798 } 2796 }
2799 2797
2800 rtc::CriticalSection crit_; 2798 rtc::CriticalSection crit_;
2801 const bool use_rtx_; 2799 const bool use_rtx_;
2802 const bool use_red_; 2800 const bool use_fec_;
2803 const bool screenshare_; 2801 const bool screenshare_;
2804 const std::unique_ptr<VideoEncoder> vp8_encoder_; 2802 const std::unique_ptr<VideoEncoder> vp8_encoder_;
2805 Call* sender_call_; 2803 Call* sender_call_;
2806 Call* receiver_call_; 2804 Call* receiver_call_;
2807 int64_t start_runtime_ms_; 2805 int64_t start_runtime_ms_;
2808 int num_frames_received_ RTC_GUARDED_BY(&crit_); 2806 int num_frames_received_ RTC_GUARDED_BY(&crit_);
2809 } test(use_rtx, use_red, screenshare); 2807 } test(use_rtx, use_fec, screenshare);
2810 2808
2811 metrics::Reset(); 2809 metrics::Reset();
2812 RunBaseTest(&test); 2810 RunBaseTest(&test);
2813 2811
2814 std::string video_prefix = 2812 std::string video_prefix =
2815 screenshare ? "WebRTC.Video.Screenshare." : "WebRTC.Video."; 2813 screenshare ? "WebRTC.Video.Screenshare." : "WebRTC.Video.";
2816 // The content type extension is disabled in non screenshare test, 2814 // The content type extension is disabled in non screenshare test,
2817 // therefore no slicing on simulcast id should be present. 2815 // therefore no slicing on simulcast id should be present.
2818 std::string video_suffix = screenshare ? ".S0" : ""; 2816 std::string video_suffix = screenshare ? ".S0" : "";
2819 // Verify that stats have been updated once. 2817 // Verify that stats have been updated once.
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
2909 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.SendDelayInMs")); 2907 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.SendDelayInMs"));
2910 EXPECT_EQ(1, metrics::NumSamples(video_prefix + "SendSideDelayInMs")); 2908 EXPECT_EQ(1, metrics::NumSamples(video_prefix + "SendSideDelayInMs"));
2911 EXPECT_EQ(1, metrics::NumSamples(video_prefix + "SendSideDelayMaxInMs")); 2909 EXPECT_EQ(1, metrics::NumSamples(video_prefix + "SendSideDelayMaxInMs"));
2912 2910
2913 int num_rtx_samples = use_rtx ? 1 : 0; 2911 int num_rtx_samples = use_rtx ? 1 : 0;
2914 EXPECT_EQ(num_rtx_samples, 2912 EXPECT_EQ(num_rtx_samples,
2915 metrics::NumSamples("WebRTC.Video.RtxBitrateSentInKbps")); 2913 metrics::NumSamples("WebRTC.Video.RtxBitrateSentInKbps"));
2916 EXPECT_EQ(num_rtx_samples, 2914 EXPECT_EQ(num_rtx_samples,
2917 metrics::NumSamples("WebRTC.Video.RtxBitrateReceivedInKbps")); 2915 metrics::NumSamples("WebRTC.Video.RtxBitrateReceivedInKbps"));
2918 2916
2919 int num_red_samples = use_red ? 1 : 0; 2917 int num_red_samples = use_fec ? 1 : 0;
2920 EXPECT_EQ(num_red_samples, 2918 EXPECT_EQ(num_red_samples,
2921 metrics::NumSamples("WebRTC.Video.FecBitrateSentInKbps")); 2919 metrics::NumSamples("WebRTC.Video.FecBitrateSentInKbps"));
2922 EXPECT_EQ(num_red_samples, 2920 EXPECT_EQ(num_red_samples,
2923 metrics::NumSamples("WebRTC.Video.FecBitrateReceivedInKbps")); 2921 metrics::NumSamples("WebRTC.Video.FecBitrateReceivedInKbps"));
2924 EXPECT_EQ(num_red_samples, 2922 EXPECT_EQ(num_red_samples,
2925 metrics::NumSamples("WebRTC.Video.ReceivedFecPacketsInPercent")); 2923 metrics::NumSamples("WebRTC.Video.ReceivedFecPacketsInPercent"));
2926 } 2924 }
2927 2925
2928 #if defined(WEBRTC_WIN) 2926 #if defined(WEBRTC_WIN)
2929 // Disabled due to flakiness on Windows (bugs.webrtc.org/7483). 2927 // Disabled due to flakiness on Windows (bugs.webrtc.org/7483).
(...skipping 1901 matching lines...) Expand 10 before | Expand all | Expand 10 after
4831 default_receive_config.rtp.rtcp_xr.receiver_reference_time_report) 4829 default_receive_config.rtp.rtcp_xr.receiver_reference_time_report)
4832 << "RTCP XR settings require rtcp-xr to be negotiated."; 4830 << "RTCP XR settings require rtcp-xr to be negotiated.";
4833 EXPECT_EQ(0U, default_receive_config.rtp.rtx_ssrc) 4831 EXPECT_EQ(0U, default_receive_config.rtp.rtx_ssrc)
4834 << "Enabling RTX requires ssrc-group: FID negotiation"; 4832 << "Enabling RTX requires ssrc-group: FID negotiation";
4835 EXPECT_TRUE(default_receive_config.rtp.rtx_associated_payload_types.empty()) 4833 EXPECT_TRUE(default_receive_config.rtp.rtx_associated_payload_types.empty())
4836 << "Enabling RTX requires rtpmap: rtx negotiation."; 4834 << "Enabling RTX requires rtpmap: rtx negotiation.";
4837 EXPECT_TRUE(default_receive_config.rtp.extensions.empty()) 4835 EXPECT_TRUE(default_receive_config.rtp.extensions.empty())
4838 << "Enabling RTP extensions require negotiation."; 4836 << "Enabling RTP extensions require negotiation.";
4839 4837
4840 VerifyEmptyNackConfig(default_receive_config.rtp.nack); 4838 VerifyEmptyNackConfig(default_receive_config.rtp.nack);
4841 VerifyEmptyUlpfecConfig(default_receive_config.rtp.ulpfec); 4839 EXPECT_EQ(-1, default_receive_config.rtp.ulpfec_payload_type)
4840 << "Enabling ULPFEC requires rtpmap: ulpfec negotiation.";
4841 EXPECT_EQ(-1, default_receive_config.rtp.red_payload_type)
4842 << "Enabling ULPFEC requires rtpmap: red negotiation.";
4842 } 4843 }
4843 4844
4844 TEST_F(EndToEndTest, VerifyDefaultFlexfecReceiveConfigParameters) { 4845 TEST_F(EndToEndTest, VerifyDefaultFlexfecReceiveConfigParameters) {
4845 test::NullTransport rtcp_send_transport; 4846 test::NullTransport rtcp_send_transport;
4846 FlexfecReceiveStream::Config default_receive_config(&rtcp_send_transport); 4847 FlexfecReceiveStream::Config default_receive_config(&rtcp_send_transport);
4847 EXPECT_EQ(-1, default_receive_config.payload_type) 4848 EXPECT_EQ(-1, default_receive_config.payload_type)
4848 << "Enabling FlexFEC requires rtpmap: flexfec negotiation."; 4849 << "Enabling FlexFEC requires rtpmap: flexfec negotiation.";
4849 EXPECT_EQ(0U, default_receive_config.remote_ssrc) 4850 EXPECT_EQ(0U, default_receive_config.remote_ssrc)
4850 << "Enabling FlexFEC requires ssrc-group: FEC-FR negotiation."; 4851 << "Enabling FlexFEC requires ssrc-group: FEC-FR negotiation.";
4851 EXPECT_TRUE(default_receive_config.protected_media_ssrcs.empty()) 4852 EXPECT_TRUE(default_receive_config.protected_media_ssrcs.empty())
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
5019 std::unique_ptr<VideoEncoder> encoder_; 5020 std::unique_ptr<VideoEncoder> encoder_;
5020 std::unique_ptr<VideoDecoder> decoder_; 5021 std::unique_ptr<VideoDecoder> decoder_;
5021 rtc::CriticalSection crit_; 5022 rtc::CriticalSection crit_;
5022 int recorded_frames_ RTC_GUARDED_BY(crit_); 5023 int recorded_frames_ RTC_GUARDED_BY(crit_);
5023 } test(this); 5024 } test(this);
5024 5025
5025 RunBaseTest(&test); 5026 RunBaseTest(&test);
5026 } 5027 }
5027 5028
5028 } // namespace webrtc 5029 } // namespace webrtc
OLDNEW
« no previous file with comments | « media/engine/webrtcvideoengine_unittest.cc ('k') | video/receive_statistics_proxy.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698