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 823 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
834 send_config->rtp.rtx.ssrcs.push_back(test::CallTest::kSendRtxSsrcs[0]); | 834 send_config->rtp.rtx.ssrcs.push_back(test::CallTest::kSendRtxSsrcs[0]); |
835 send_config->rtp.rtx.payload_type = test::CallTest::kSendRtxPayloadType; | 835 send_config->rtp.rtx.payload_type = test::CallTest::kSendRtxPayloadType; |
836 | 836 |
837 (*receive_configs)[0].rtp.nack.rtp_history_ms = | 837 (*receive_configs)[0].rtp.nack.rtp_history_ms = |
838 test::CallTest::kNackRtpHistoryMs; | 838 test::CallTest::kNackRtpHistoryMs; |
839 (*receive_configs)[0].rtp.ulpfec.red_rtx_payload_type = | 839 (*receive_configs)[0].rtp.ulpfec.red_rtx_payload_type = |
840 test::CallTest::kRtxRedPayloadType; | 840 test::CallTest::kRtxRedPayloadType; |
841 | 841 |
842 (*receive_configs)[0].rtp.rtx_ssrc = test::CallTest::kSendRtxSsrcs[0]; | 842 (*receive_configs)[0].rtp.rtx_ssrc = test::CallTest::kSendRtxSsrcs[0]; |
843 (*receive_configs)[0] | 843 (*receive_configs)[0] |
844 .rtp.rtx_payload_types[test::CallTest::kVideoSendPayloadType] = | 844 .rtp.media_pt_by_rtx_pt[test::CallTest::kSendRtxPayloadType] = |
845 test::CallTest::kSendRtxPayloadType; | 845 test::CallTest::kVideoSendPayloadType; |
846 } | 846 } |
847 } | 847 } |
848 | 848 |
849 void ModifyFlexfecConfigs( | 849 void ModifyFlexfecConfigs( |
850 std::vector<FlexfecReceiveStream::Config>* receive_configs) override { | 850 std::vector<FlexfecReceiveStream::Config>* receive_configs) override { |
851 (*receive_configs)[0].local_ssrc = kFlexfecLocalSsrc; | 851 (*receive_configs)[0].local_ssrc = kFlexfecLocalSsrc; |
852 } | 852 } |
853 | 853 |
854 void PerformTest() override { | 854 void PerformTest() override { |
855 EXPECT_TRUE(Wait()) | 855 EXPECT_TRUE(Wait()) |
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1143 (*receive_configs)[0].rtp.ulpfec.red_payload_type = | 1143 (*receive_configs)[0].rtp.ulpfec.red_payload_type = |
1144 send_config->rtp.ulpfec.red_payload_type; | 1144 send_config->rtp.ulpfec.red_payload_type; |
1145 (*receive_configs)[0].rtp.ulpfec.red_rtx_payload_type = | 1145 (*receive_configs)[0].rtp.ulpfec.red_rtx_payload_type = |
1146 send_config->rtp.ulpfec.red_rtx_payload_type; | 1146 send_config->rtp.ulpfec.red_rtx_payload_type; |
1147 } | 1147 } |
1148 | 1148 |
1149 if (retransmission_ssrc_ == kSendRtxSsrcs[0]) { | 1149 if (retransmission_ssrc_ == kSendRtxSsrcs[0]) { |
1150 send_config->rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[0]); | 1150 send_config->rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[0]); |
1151 send_config->rtp.rtx.payload_type = kSendRtxPayloadType; | 1151 send_config->rtp.rtx.payload_type = kSendRtxPayloadType; |
1152 (*receive_configs)[0].rtp.rtx_ssrc = kSendRtxSsrcs[0]; | 1152 (*receive_configs)[0].rtp.rtx_ssrc = kSendRtxSsrcs[0]; |
1153 (*receive_configs)[0].rtp.rtx_payload_types[payload_type_] = | 1153 (*receive_configs)[0].rtp.media_pt_by_rtx_pt[kSendRtxPayloadType] = |
1154 kSendRtxPayloadType; | 1154 payload_type_; |
1155 } | 1155 } |
1156 // Configure encoding and decoding with VP8, since generic packetization | 1156 // Configure encoding and decoding with VP8, since generic packetization |
1157 // doesn't support FEC with NACK. | 1157 // doesn't support FEC with NACK. |
1158 RTC_DCHECK_EQ(1, (*receive_configs)[0].decoders.size()); | 1158 RTC_DCHECK_EQ(1, (*receive_configs)[0].decoders.size()); |
1159 send_config->encoder_settings.encoder = encoder_.get(); | 1159 send_config->encoder_settings.encoder = encoder_.get(); |
1160 send_config->encoder_settings.payload_name = "VP8"; | 1160 send_config->encoder_settings.payload_name = "VP8"; |
1161 (*receive_configs)[0].decoders[0].payload_name = "VP8"; | 1161 (*receive_configs)[0].decoders[0].payload_name = "VP8"; |
1162 } | 1162 } |
1163 | 1163 |
1164 void PerformTest() override { | 1164 void PerformTest() override { |
(...skipping 1506 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2671 (*receive_configs)[0].decoders[0].payload_name = "VP8"; | 2671 (*receive_configs)[0].decoders[0].payload_name = "VP8"; |
2672 (*receive_configs)[0].rtp.ulpfec.red_payload_type = kRedPayloadType; | 2672 (*receive_configs)[0].rtp.ulpfec.red_payload_type = kRedPayloadType; |
2673 (*receive_configs)[0].rtp.ulpfec.ulpfec_payload_type = | 2673 (*receive_configs)[0].rtp.ulpfec.ulpfec_payload_type = |
2674 kUlpfecPayloadType; | 2674 kUlpfecPayloadType; |
2675 } | 2675 } |
2676 // RTX | 2676 // RTX |
2677 if (use_rtx_) { | 2677 if (use_rtx_) { |
2678 send_config->rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[0]); | 2678 send_config->rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[0]); |
2679 send_config->rtp.rtx.payload_type = kSendRtxPayloadType; | 2679 send_config->rtp.rtx.payload_type = kSendRtxPayloadType; |
2680 (*receive_configs)[0].rtp.rtx_ssrc = kSendRtxSsrcs[0]; | 2680 (*receive_configs)[0].rtp.rtx_ssrc = kSendRtxSsrcs[0]; |
2681 (*receive_configs)[0].rtp.rtx_payload_types[kFakeVideoSendPayloadType] = | 2681 (*receive_configs)[0].rtp.media_pt_by_rtx_pt[kSendRtxPayloadType] = |
2682 kSendRtxPayloadType; | 2682 kFakeVideoSendPayloadType; |
2683 } | 2683 } |
2684 // RTT needed for RemoteNtpTimeEstimator for the receive stream. | 2684 // RTT needed for RemoteNtpTimeEstimator for the receive stream. |
2685 (*receive_configs)[0].rtp.rtcp_xr.receiver_reference_time_report = true; | 2685 (*receive_configs)[0].rtp.rtcp_xr.receiver_reference_time_report = true; |
2686 encoder_config->content_type = | 2686 encoder_config->content_type = |
2687 screenshare_ ? VideoEncoderConfig::ContentType::kScreen | 2687 screenshare_ ? VideoEncoderConfig::ContentType::kScreen |
2688 : VideoEncoderConfig::ContentType::kRealtimeVideo; | 2688 : VideoEncoderConfig::ContentType::kRealtimeVideo; |
2689 } | 2689 } |
2690 | 2690 |
2691 void OnCallsCreated(Call* sender_call, Call* receiver_call) override { | 2691 void OnCallsCreated(Call* sender_call, Call* receiver_call) override { |
2692 sender_call_ = sender_call; | 2692 sender_call_ = sender_call; |
(...skipping 737 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3430 const std::vector<uint32_t>& ssrcs = send_config->rtp.ssrcs; | 3430 const std::vector<uint32_t>& ssrcs = send_config->rtp.ssrcs; |
3431 for (size_t i = 0; i < ssrcs.size(); ++i) { | 3431 for (size_t i = 0; i < ssrcs.size(); ++i) { |
3432 expected_send_ssrcs_.insert(ssrcs[i]); | 3432 expected_send_ssrcs_.insert(ssrcs[i]); |
3433 expected_receive_ssrcs_.push_back( | 3433 expected_receive_ssrcs_.push_back( |
3434 (*receive_configs)[i].rtp.remote_ssrc); | 3434 (*receive_configs)[i].rtp.remote_ssrc); |
3435 (*receive_configs)[i].render_delay_ms = kExpectedRenderDelayMs; | 3435 (*receive_configs)[i].render_delay_ms = kExpectedRenderDelayMs; |
3436 (*receive_configs)[i].renderer = &receive_stream_renderer_; | 3436 (*receive_configs)[i].renderer = &receive_stream_renderer_; |
3437 (*receive_configs)[i].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; | 3437 (*receive_configs)[i].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; |
3438 | 3438 |
3439 (*receive_configs)[i].rtp.rtx_ssrc = kSendRtxSsrcs[i]; | 3439 (*receive_configs)[i].rtp.rtx_ssrc = kSendRtxSsrcs[i]; |
3440 (*receive_configs)[i].rtp.rtx_payload_types[kFakeVideoSendPayloadType] = | 3440 (*receive_configs)[i].rtp.media_pt_by_rtx_pt[kSendRtxPayloadType] = |
3441 kSendRtxPayloadType; | 3441 kFakeVideoSendPayloadType; |
3442 } | 3442 } |
3443 | 3443 |
3444 for (size_t i = 0; i < kNumSsrcs; ++i) | 3444 for (size_t i = 0; i < kNumSsrcs; ++i) |
3445 send_config->rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[i]); | 3445 send_config->rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[i]); |
3446 | 3446 |
3447 // Use a delayed encoder to make sure we see CpuOveruseMetrics stats that | 3447 // Use a delayed encoder to make sure we see CpuOveruseMetrics stats that |
3448 // are non-zero. | 3448 // are non-zero. |
3449 send_config->encoder_settings.encoder = &encoder_; | 3449 send_config->encoder_settings.encoder = &encoder_; |
3450 } | 3450 } |
3451 | 3451 |
(...skipping 731 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4183 video_send_config_.encoder_settings.encoder = encoder.get(); | 4183 video_send_config_.encoder_settings.encoder = encoder.get(); |
4184 video_send_config_.encoder_settings.payload_name = "VP8"; | 4184 video_send_config_.encoder_settings.payload_name = "VP8"; |
4185 video_send_config_.encoder_settings.payload_type = kVideoSendPayloadType; | 4185 video_send_config_.encoder_settings.payload_type = kVideoSendPayloadType; |
4186 video_send_config_.rtp.nack.rtp_history_ms = kNackRtpHistoryMs; | 4186 video_send_config_.rtp.nack.rtp_history_ms = kNackRtpHistoryMs; |
4187 video_send_config_.rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[0]); | 4187 video_send_config_.rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[0]); |
4188 video_send_config_.rtp.rtx.payload_type = kSendRtxPayloadType; | 4188 video_send_config_.rtp.rtx.payload_type = kSendRtxPayloadType; |
4189 | 4189 |
4190 CreateMatchingReceiveConfigs(&receive_transport); | 4190 CreateMatchingReceiveConfigs(&receive_transport); |
4191 video_receive_configs_[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; | 4191 video_receive_configs_[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; |
4192 video_receive_configs_[0].rtp.rtx_ssrc = kSendRtxSsrcs[0]; | 4192 video_receive_configs_[0].rtp.rtx_ssrc = kSendRtxSsrcs[0]; |
4193 video_receive_configs_[0].rtp.rtx_payload_types[kVideoSendPayloadType] = | 4193 video_receive_configs_[0].rtp.media_pt_by_rtx_pt[kSendRtxPayloadType] = |
4194 kSendRtxPayloadType; | 4194 kVideoSendPayloadType; |
4195 | 4195 |
4196 // The matching FlexFEC receive config is not created by | 4196 // The matching FlexFEC receive config is not created by |
4197 // CreateMatchingReceiveConfigs since this is not a test::BaseTest. | 4197 // CreateMatchingReceiveConfigs since this is not a test::BaseTest. |
4198 // Set up the receive config manually instead. | 4198 // Set up the receive config manually instead. |
4199 FlexfecReceiveStream::Config flexfec_receive_config(&receive_transport); | 4199 FlexfecReceiveStream::Config flexfec_receive_config(&receive_transport); |
4200 flexfec_receive_config.payload_type = | 4200 flexfec_receive_config.payload_type = |
4201 video_send_config_.rtp.flexfec.payload_type; | 4201 video_send_config_.rtp.flexfec.payload_type; |
4202 flexfec_receive_config.remote_ssrc = video_send_config_.rtp.flexfec.ssrc; | 4202 flexfec_receive_config.remote_ssrc = video_send_config_.rtp.flexfec.ssrc; |
4203 flexfec_receive_config.protected_media_ssrcs = | 4203 flexfec_receive_config.protected_media_ssrcs = |
4204 video_send_config_.rtp.flexfec.protected_media_ssrcs; | 4204 video_send_config_.rtp.flexfec.protected_media_ssrcs; |
(...skipping 441 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4646 VideoReceiveStream::Config default_receive_config(nullptr); | 4646 VideoReceiveStream::Config default_receive_config(nullptr); |
4647 EXPECT_EQ(RtcpMode::kCompound, default_receive_config.rtp.rtcp_mode) | 4647 EXPECT_EQ(RtcpMode::kCompound, default_receive_config.rtp.rtcp_mode) |
4648 << "Reduced-size RTCP require rtcp-rsize to be negotiated."; | 4648 << "Reduced-size RTCP require rtcp-rsize to be negotiated."; |
4649 EXPECT_FALSE(default_receive_config.rtp.remb) | 4649 EXPECT_FALSE(default_receive_config.rtp.remb) |
4650 << "REMB require rtcp-fb: goog-remb to be negotiated."; | 4650 << "REMB require rtcp-fb: goog-remb to be negotiated."; |
4651 EXPECT_FALSE( | 4651 EXPECT_FALSE( |
4652 default_receive_config.rtp.rtcp_xr.receiver_reference_time_report) | 4652 default_receive_config.rtp.rtcp_xr.receiver_reference_time_report) |
4653 << "RTCP XR settings require rtcp-xr to be negotiated."; | 4653 << "RTCP XR settings require rtcp-xr to be negotiated."; |
4654 EXPECT_EQ(0U, default_receive_config.rtp.rtx_ssrc) | 4654 EXPECT_EQ(0U, default_receive_config.rtp.rtx_ssrc) |
4655 << "Enabling RTX requires ssrc-group: FID negotiation"; | 4655 << "Enabling RTX requires ssrc-group: FID negotiation"; |
4656 EXPECT_TRUE(default_receive_config.rtp.rtx_payload_types.empty()) | 4656 EXPECT_TRUE(default_receive_config.rtp.media_pt_by_rtx_pt.empty()) |
4657 << "Enabling RTX requires rtpmap: rtx negotiation."; | 4657 << "Enabling RTX requires rtpmap: rtx negotiation."; |
4658 EXPECT_TRUE(default_receive_config.rtp.extensions.empty()) | 4658 EXPECT_TRUE(default_receive_config.rtp.extensions.empty()) |
4659 << "Enabling RTP extensions require negotiation."; | 4659 << "Enabling RTP extensions require negotiation."; |
4660 | 4660 |
4661 VerifyEmptyNackConfig(default_receive_config.rtp.nack); | 4661 VerifyEmptyNackConfig(default_receive_config.rtp.nack); |
4662 VerifyEmptyUlpfecConfig(default_receive_config.rtp.ulpfec); | 4662 VerifyEmptyUlpfecConfig(default_receive_config.rtp.ulpfec); |
4663 } | 4663 } |
4664 | 4664 |
4665 TEST_F(EndToEndTest, VerifyDefaultFlexfecReceiveConfigParameters) { | 4665 TEST_F(EndToEndTest, VerifyDefaultFlexfecReceiveConfigParameters) { |
4666 test::NullTransport rtcp_send_transport; | 4666 test::NullTransport rtcp_send_transport; |
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4840 std::unique_ptr<VideoEncoder> encoder_; | 4840 std::unique_ptr<VideoEncoder> encoder_; |
4841 std::unique_ptr<VideoDecoder> decoder_; | 4841 std::unique_ptr<VideoDecoder> decoder_; |
4842 rtc::CriticalSection crit_; | 4842 rtc::CriticalSection crit_; |
4843 int recorded_frames_ GUARDED_BY(crit_); | 4843 int recorded_frames_ GUARDED_BY(crit_); |
4844 } test(this); | 4844 } test(this); |
4845 | 4845 |
4846 RunBaseTest(&test); | 4846 RunBaseTest(&test); |
4847 } | 4847 } |
4848 | 4848 |
4849 } // namespace webrtc | 4849 } // namespace webrtc |
OLD | NEW |