Chromium Code Reviews| 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 #include <algorithm> | 10 #include <algorithm> |
| (...skipping 678 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 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 Loading... | |
| 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 = | 856 send_config->rtp.ulpfec.red_rtx_payload_type = |
|
brandtr
2017/09/21 08:11:33
RED should not be used in this test, so you can re
nisse-webrtc
2017/09/21 08:37:46
Done.
| |
| 857 test::CallTest::kRtxRedPayloadType; | 857 test::CallTest::kRtxRedPayloadType; |
| 858 send_config->rtp.rtx.ssrcs.push_back(test::CallTest::kSendRtxSsrcs[0]); | 858 send_config->rtp.rtx.ssrcs.push_back(test::CallTest::kSendRtxSsrcs[0]); |
| 859 send_config->rtp.rtx.payload_type = test::CallTest::kSendRtxPayloadType; | 859 send_config->rtp.rtx.payload_type = test::CallTest::kSendRtxPayloadType; |
| 860 | 860 |
| 861 (*receive_configs)[0].rtp.nack.rtp_history_ms = | 861 (*receive_configs)[0].rtp.nack.rtp_history_ms = |
| 862 test::CallTest::kNackRtpHistoryMs; | 862 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]; | 863 (*receive_configs)[0].rtp.rtx_ssrc = test::CallTest::kSendRtxSsrcs[0]; |
| 867 (*receive_configs)[0] | 864 (*receive_configs)[0] |
| 868 .rtp | 865 .rtp |
| 869 .rtx_associated_payload_types[test::CallTest::kSendRtxPayloadType] = | 866 .rtx_associated_payload_types[test::CallTest::kSendRtxPayloadType] = |
| 870 test::CallTest::kVideoSendPayloadType; | 867 test::CallTest::kVideoSendPayloadType; |
| 871 } | 868 } |
| 872 } | 869 } |
| 873 | 870 |
| 874 void OnFrameGeneratorCapturerCreated( | 871 void OnFrameGeneratorCapturerCreated( |
| 875 test::FrameGeneratorCapturer* frame_generator_capturer) override { | 872 test::FrameGeneratorCapturer* frame_generator_capturer) override { |
| (...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1036 // Configure hybrid NACK/FEC. | 1033 // Configure hybrid NACK/FEC. |
| 1037 send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs; | 1034 send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs; |
| 1038 send_config->rtp.ulpfec.red_payload_type = kRedPayloadType; | 1035 send_config->rtp.ulpfec.red_payload_type = kRedPayloadType; |
| 1039 send_config->rtp.ulpfec.ulpfec_payload_type = kUlpfecPayloadType; | 1036 send_config->rtp.ulpfec.ulpfec_payload_type = kUlpfecPayloadType; |
| 1040 // Set codec to VP8, otherwise NACK/FEC hybrid will be disabled. | 1037 // Set codec to VP8, otherwise NACK/FEC hybrid will be disabled. |
| 1041 send_config->encoder_settings.encoder = encoder_.get(); | 1038 send_config->encoder_settings.encoder = encoder_.get(); |
| 1042 send_config->encoder_settings.payload_name = "VP8"; | 1039 send_config->encoder_settings.payload_name = "VP8"; |
| 1043 send_config->encoder_settings.payload_type = kFakeVideoSendPayloadType; | 1040 send_config->encoder_settings.payload_type = kFakeVideoSendPayloadType; |
| 1044 | 1041 |
| 1045 (*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; | 1042 (*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; |
| 1046 (*receive_configs)[0].rtp.ulpfec.red_payload_type = kRedPayloadType; | 1043 (*receive_configs)[0].rtp.red_payload_type = kRedPayloadType; |
| 1047 (*receive_configs)[0].rtp.ulpfec.ulpfec_payload_type = kUlpfecPayloadType; | 1044 (*receive_configs)[0].rtp.ulpfec_payload_type = kUlpfecPayloadType; |
| 1048 | 1045 |
| 1049 (*receive_configs)[0].decoders.resize(1); | 1046 (*receive_configs)[0].decoders.resize(1); |
| 1050 (*receive_configs)[0].decoders[0].payload_type = | 1047 (*receive_configs)[0].decoders[0].payload_type = |
| 1051 send_config->encoder_settings.payload_type; | 1048 send_config->encoder_settings.payload_type; |
| 1052 (*receive_configs)[0].decoders[0].payload_name = | 1049 (*receive_configs)[0].decoders[0].payload_name = |
| 1053 send_config->encoder_settings.payload_name; | 1050 send_config->encoder_settings.payload_name; |
| 1054 (*receive_configs)[0].decoders[0].decoder = decoder_.get(); | 1051 (*receive_configs)[0].decoders[0].decoder = decoder_.get(); |
| 1055 } | 1052 } |
| 1056 | 1053 |
| 1057 void PerformTest() override { | 1054 void PerformTest() override { |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1164 (*receive_configs)[0].disable_prerenderer_smoothing = true; | 1161 (*receive_configs)[0].disable_prerenderer_smoothing = true; |
| 1165 (*receive_configs)[0].renderer = this; | 1162 (*receive_configs)[0].renderer = this; |
| 1166 | 1163 |
| 1167 (*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; | 1164 (*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; |
| 1168 | 1165 |
| 1169 if (payload_type_ == kRedPayloadType) { | 1166 if (payload_type_ == kRedPayloadType) { |
| 1170 send_config->rtp.ulpfec.ulpfec_payload_type = kUlpfecPayloadType; | 1167 send_config->rtp.ulpfec.ulpfec_payload_type = kUlpfecPayloadType; |
| 1171 send_config->rtp.ulpfec.red_payload_type = kRedPayloadType; | 1168 send_config->rtp.ulpfec.red_payload_type = kRedPayloadType; |
| 1172 if (retransmission_ssrc_ == kSendRtxSsrcs[0]) | 1169 if (retransmission_ssrc_ == kSendRtxSsrcs[0]) |
| 1173 send_config->rtp.ulpfec.red_rtx_payload_type = kRtxRedPayloadType; | 1170 send_config->rtp.ulpfec.red_rtx_payload_type = kRtxRedPayloadType; |
| 1174 (*receive_configs)[0].rtp.ulpfec.ulpfec_payload_type = | 1171 (*receive_configs)[0].rtp.ulpfec_payload_type = |
| 1175 send_config->rtp.ulpfec.ulpfec_payload_type; | 1172 send_config->rtp.ulpfec.ulpfec_payload_type; |
| 1176 (*receive_configs)[0].rtp.ulpfec.red_payload_type = | 1173 (*receive_configs)[0].rtp.red_payload_type = |
| 1177 send_config->rtp.ulpfec.red_payload_type; | 1174 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 } | 1175 } |
| 1181 | 1176 |
| 1182 if (retransmission_ssrc_ == kSendRtxSsrcs[0]) { | 1177 if (retransmission_ssrc_ == kSendRtxSsrcs[0]) { |
| 1183 send_config->rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[0]); | 1178 send_config->rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[0]); |
| 1184 send_config->rtp.rtx.payload_type = kSendRtxPayloadType; | 1179 send_config->rtp.rtx.payload_type = kSendRtxPayloadType; |
| 1185 (*receive_configs)[0].rtp.rtx_ssrc = kSendRtxSsrcs[0]; | 1180 (*receive_configs)[0].rtp.rtx_ssrc = kSendRtxSsrcs[0]; |
| 1186 (*receive_configs)[0] | 1181 (*receive_configs)[0] |
| 1187 .rtp.rtx_associated_payload_types[(payload_type_ == kRedPayloadType) | 1182 .rtp.rtx_associated_payload_types[(payload_type_ == kRedPayloadType) |
| 1188 ? kRtxRedPayloadType | 1183 ? kRtxRedPayloadType |
| 1189 : kSendRtxPayloadType] = | 1184 : kSendRtxPayloadType] = |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 1200 void OnFrameGeneratorCapturerCreated( | 1195 void OnFrameGeneratorCapturerCreated( |
| 1201 test::FrameGeneratorCapturer* frame_generator_capturer) override { | 1196 test::FrameGeneratorCapturer* frame_generator_capturer) override { |
| 1202 frame_generator_capturer->SetFakeRotation(kVideoRotation_90); | 1197 frame_generator_capturer->SetFakeRotation(kVideoRotation_90); |
| 1203 } | 1198 } |
| 1204 | 1199 |
| 1205 void PerformTest() override { | 1200 void PerformTest() override { |
| 1206 EXPECT_TRUE(Wait()) | 1201 EXPECT_TRUE(Wait()) |
| 1207 << "Timed out while waiting for retransmission to render."; | 1202 << "Timed out while waiting for retransmission to render."; |
| 1208 } | 1203 } |
| 1209 | 1204 |
| 1210 int GetPayloadType(bool use_rtx, bool use_red) { | 1205 int GetPayloadType(bool use_rtx, bool use_red) { |
|
nisse-webrtc
2017/09/21 08:57:29
I'm doing a search-and-replace then, changing to u
| |
| 1211 if (use_red) { | 1206 if (use_red) { |
| 1212 if (use_rtx) | 1207 if (use_rtx) |
| 1213 return kRtxRedPayloadType; | 1208 return kRtxRedPayloadType; |
| 1214 return kRedPayloadType; | 1209 return kRedPayloadType; |
| 1215 } | 1210 } |
| 1216 if (use_rtx) | 1211 if (use_rtx) |
| 1217 return kSendRtxPayloadType; | 1212 return kSendRtxPayloadType; |
| 1218 return kFakeVideoSendPayloadType; | 1213 return kFakeVideoSendPayloadType; |
| 1219 } | 1214 } |
| 1220 | 1215 |
| (...skipping 1472 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2693 RunBaseTest(&test); | 2688 RunBaseTest(&test); |
| 2694 | 2689 |
| 2695 EXPECT_EQ( | 2690 EXPECT_EQ( |
| 2696 1, metrics::NumSamples("WebRTC.Video.UniqueNackRequestsSentInPercent")); | 2691 1, metrics::NumSamples("WebRTC.Video.UniqueNackRequestsSentInPercent")); |
| 2697 EXPECT_EQ(1, metrics::NumSamples( | 2692 EXPECT_EQ(1, metrics::NumSamples( |
| 2698 "WebRTC.Video.UniqueNackRequestsReceivedInPercent")); | 2693 "WebRTC.Video.UniqueNackRequestsReceivedInPercent")); |
| 2699 EXPECT_GT(metrics::MinSample("WebRTC.Video.NackPacketsSentPerMinute"), 0); | 2694 EXPECT_GT(metrics::MinSample("WebRTC.Video.NackPacketsSentPerMinute"), 0); |
| 2700 } | 2695 } |
| 2701 | 2696 |
| 2702 void EndToEndTest::VerifyHistogramStats(bool use_rtx, | 2697 void EndToEndTest::VerifyHistogramStats(bool use_rtx, |
| 2703 bool use_red, | 2698 bool use_red, |
|
brandtr
2017/09/21 08:11:33
Would you mind renaming |use_red| to |use_fec| ? B
nisse-webrtc
2017/09/21 08:37:46
Just in this method and its local classes, or glob
brandtr
2017/09/21 08:45:22
I think they are equivalent: I have already tried
| |
| 2704 bool screenshare) { | 2699 bool screenshare) { |
| 2705 class StatsObserver : public test::EndToEndTest, | 2700 class StatsObserver : public test::EndToEndTest, |
| 2706 public rtc::VideoSinkInterface<VideoFrame> { | 2701 public rtc::VideoSinkInterface<VideoFrame> { |
| 2707 public: | 2702 public: |
| 2708 StatsObserver(bool use_rtx, bool use_red, bool screenshare) | 2703 StatsObserver(bool use_rtx, bool use_red, bool screenshare) |
| 2709 : EndToEndTest(kLongTimeoutMs), | 2704 : EndToEndTest(kLongTimeoutMs), |
| 2710 use_rtx_(use_rtx), | 2705 use_rtx_(use_rtx), |
| 2711 use_red_(use_red), | 2706 use_red_(use_red), |
| 2712 screenshare_(screenshare), | 2707 screenshare_(screenshare), |
| 2713 // This test uses NACK, so to send FEC we can't use a fake encoder. | 2708 // This test uses NACK, so to send FEC we can't use a fake encoder. |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2746 int64_t elapsed_sec = (now - start_runtime_ms_) / 1000; | 2741 int64_t elapsed_sec = (now - start_runtime_ms_) / 1000; |
| 2747 return elapsed_sec > metrics::kMinRunTimeInSeconds * 2; | 2742 return elapsed_sec > metrics::kMinRunTimeInSeconds * 2; |
| 2748 } | 2743 } |
| 2749 | 2744 |
| 2750 bool MinNumberOfFramesReceived() const { | 2745 bool MinNumberOfFramesReceived() const { |
| 2751 const int kMinRequiredHistogramSamples = 200; | 2746 const int kMinRequiredHistogramSamples = 200; |
| 2752 rtc::CritScope lock(&crit_); | 2747 rtc::CritScope lock(&crit_); |
| 2753 return num_frames_received_ > kMinRequiredHistogramSamples; | 2748 return num_frames_received_ > kMinRequiredHistogramSamples; |
| 2754 } | 2749 } |
| 2755 | 2750 |
| 2756 void ModifyVideoConfigs( | 2751 void ModifyVideoConfigs( |
|
brandtr
2017/09/21 08:11:33
It doesn't look like this test sets ups RED/RTX co
nisse-webrtc
2017/09/21 08:37:46
I've given it a try, please have a look.
| |
| 2757 VideoSendStream::Config* send_config, | 2752 VideoSendStream::Config* send_config, |
| 2758 std::vector<VideoReceiveStream::Config>* receive_configs, | 2753 std::vector<VideoReceiveStream::Config>* receive_configs, |
| 2759 VideoEncoderConfig* encoder_config) override { | 2754 VideoEncoderConfig* encoder_config) override { |
| 2760 // NACK | 2755 // NACK |
| 2761 send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs; | 2756 send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs; |
| 2762 (*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; | 2757 (*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; |
| 2763 (*receive_configs)[0].renderer = this; | 2758 (*receive_configs)[0].renderer = this; |
| 2764 // FEC | 2759 // FEC |
| 2765 if (use_red_) { | 2760 if (use_red_) { |
| 2766 send_config->rtp.ulpfec.ulpfec_payload_type = kUlpfecPayloadType; | 2761 send_config->rtp.ulpfec.ulpfec_payload_type = kUlpfecPayloadType; |
| 2767 send_config->rtp.ulpfec.red_payload_type = kRedPayloadType; | 2762 send_config->rtp.ulpfec.red_payload_type = kRedPayloadType; |
| 2768 send_config->encoder_settings.encoder = vp8_encoder_.get(); | 2763 send_config->encoder_settings.encoder = vp8_encoder_.get(); |
| 2769 send_config->encoder_settings.payload_name = "VP8"; | 2764 send_config->encoder_settings.payload_name = "VP8"; |
| 2770 (*receive_configs)[0].decoders[0].payload_name = "VP8"; | 2765 (*receive_configs)[0].decoders[0].payload_name = "VP8"; |
| 2771 (*receive_configs)[0].rtp.ulpfec.red_payload_type = kRedPayloadType; | 2766 (*receive_configs)[0].rtp.red_payload_type = kRedPayloadType; |
| 2772 (*receive_configs)[0].rtp.ulpfec.ulpfec_payload_type = | 2767 (*receive_configs)[0].rtp.ulpfec_payload_type = kUlpfecPayloadType; |
| 2773 kUlpfecPayloadType; | |
| 2774 } | 2768 } |
| 2775 // RTX | 2769 // RTX |
| 2776 if (use_rtx_) { | 2770 if (use_rtx_) { |
| 2777 send_config->rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[0]); | 2771 send_config->rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[0]); |
| 2778 send_config->rtp.rtx.payload_type = kSendRtxPayloadType; | 2772 send_config->rtp.rtx.payload_type = kSendRtxPayloadType; |
| 2779 (*receive_configs)[0].rtp.rtx_ssrc = kSendRtxSsrcs[0]; | 2773 (*receive_configs)[0].rtp.rtx_ssrc = kSendRtxSsrcs[0]; |
| 2780 (*receive_configs)[0] | 2774 (*receive_configs)[0] |
| 2781 .rtp.rtx_associated_payload_types[kSendRtxPayloadType] = | 2775 .rtp.rtx_associated_payload_types[kSendRtxPayloadType] = |
| 2782 kFakeVideoSendPayloadType; | 2776 kFakeVideoSendPayloadType; |
| 2783 } | 2777 } |
| (...skipping 2047 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4831 default_receive_config.rtp.rtcp_xr.receiver_reference_time_report) | 4825 default_receive_config.rtp.rtcp_xr.receiver_reference_time_report) |
| 4832 << "RTCP XR settings require rtcp-xr to be negotiated."; | 4826 << "RTCP XR settings require rtcp-xr to be negotiated."; |
| 4833 EXPECT_EQ(0U, default_receive_config.rtp.rtx_ssrc) | 4827 EXPECT_EQ(0U, default_receive_config.rtp.rtx_ssrc) |
| 4834 << "Enabling RTX requires ssrc-group: FID negotiation"; | 4828 << "Enabling RTX requires ssrc-group: FID negotiation"; |
| 4835 EXPECT_TRUE(default_receive_config.rtp.rtx_associated_payload_types.empty()) | 4829 EXPECT_TRUE(default_receive_config.rtp.rtx_associated_payload_types.empty()) |
| 4836 << "Enabling RTX requires rtpmap: rtx negotiation."; | 4830 << "Enabling RTX requires rtpmap: rtx negotiation."; |
| 4837 EXPECT_TRUE(default_receive_config.rtp.extensions.empty()) | 4831 EXPECT_TRUE(default_receive_config.rtp.extensions.empty()) |
| 4838 << "Enabling RTP extensions require negotiation."; | 4832 << "Enabling RTP extensions require negotiation."; |
| 4839 | 4833 |
| 4840 VerifyEmptyNackConfig(default_receive_config.rtp.nack); | 4834 VerifyEmptyNackConfig(default_receive_config.rtp.nack); |
| 4841 VerifyEmptyUlpfecConfig(default_receive_config.rtp.ulpfec); | 4835 EXPECT_EQ(-1, default_receive_config.rtp.ulpfec_payload_type) |
| 4836 << "Enabling ULPFEC requires rtpmap: ulpfec negotiation."; | |
| 4837 EXPECT_EQ(-1, default_receive_config.rtp.red_payload_type) | |
| 4838 << "Enabling ULPFEC requires rtpmap: red negotiation."; | |
| 4842 } | 4839 } |
| 4843 | 4840 |
| 4844 TEST_F(EndToEndTest, VerifyDefaultFlexfecReceiveConfigParameters) { | 4841 TEST_F(EndToEndTest, VerifyDefaultFlexfecReceiveConfigParameters) { |
| 4845 test::NullTransport rtcp_send_transport; | 4842 test::NullTransport rtcp_send_transport; |
| 4846 FlexfecReceiveStream::Config default_receive_config(&rtcp_send_transport); | 4843 FlexfecReceiveStream::Config default_receive_config(&rtcp_send_transport); |
| 4847 EXPECT_EQ(-1, default_receive_config.payload_type) | 4844 EXPECT_EQ(-1, default_receive_config.payload_type) |
| 4848 << "Enabling FlexFEC requires rtpmap: flexfec negotiation."; | 4845 << "Enabling FlexFEC requires rtpmap: flexfec negotiation."; |
| 4849 EXPECT_EQ(0U, default_receive_config.remote_ssrc) | 4846 EXPECT_EQ(0U, default_receive_config.remote_ssrc) |
| 4850 << "Enabling FlexFEC requires ssrc-group: FEC-FR negotiation."; | 4847 << "Enabling FlexFEC requires ssrc-group: FEC-FR negotiation."; |
| 4851 EXPECT_TRUE(default_receive_config.protected_media_ssrcs.empty()) | 4848 EXPECT_TRUE(default_receive_config.protected_media_ssrcs.empty()) |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 5019 std::unique_ptr<VideoEncoder> encoder_; | 5016 std::unique_ptr<VideoEncoder> encoder_; |
| 5020 std::unique_ptr<VideoDecoder> decoder_; | 5017 std::unique_ptr<VideoDecoder> decoder_; |
| 5021 rtc::CriticalSection crit_; | 5018 rtc::CriticalSection crit_; |
| 5022 int recorded_frames_ RTC_GUARDED_BY(crit_); | 5019 int recorded_frames_ RTC_GUARDED_BY(crit_); |
| 5023 } test(this); | 5020 } test(this); |
| 5024 | 5021 |
| 5025 RunBaseTest(&test); | 5022 RunBaseTest(&test); |
| 5026 } | 5023 } |
| 5027 | 5024 |
| 5028 } // namespace webrtc | 5025 } // namespace webrtc |
| OLD | NEW |