| 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 847 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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 = | 863 (*receive_configs)[0].rtp.ulpfec.red_rtx_payload_type = |
| 864 test::CallTest::kRtxRedPayloadType; | 864 test::CallTest::kRtxRedPayloadType; |
| 865 | 865 |
| 866 (*receive_configs)[0].rtp.rtx_ssrc = test::CallTest::kSendRtxSsrcs[0]; | 866 (*receive_configs)[0].rtp.rtx_ssrc = test::CallTest::kSendRtxSsrcs[0]; |
| 867 (*receive_configs)[0] | 867 (*receive_configs)[0] |
| 868 .rtp.rtx_payload_types[test::CallTest::kVideoSendPayloadType] = | 868 .rtp |
| 869 test::CallTest::kSendRtxPayloadType; | 869 .rtx_associated_payload_types[test::CallTest::kSendRtxPayloadType] = |
| 870 test::CallTest::kVideoSendPayloadType; |
| 870 } | 871 } |
| 871 } | 872 } |
| 872 | 873 |
| 873 void OnFrameGeneratorCapturerCreated( | 874 void OnFrameGeneratorCapturerCreated( |
| 874 test::FrameGeneratorCapturer* frame_generator_capturer) override { | 875 test::FrameGeneratorCapturer* frame_generator_capturer) override { |
| 875 frame_generator_capturer->SetFakeRotation(kVideoRotation_90); | 876 frame_generator_capturer->SetFakeRotation(kVideoRotation_90); |
| 876 } | 877 } |
| 877 | 878 |
| 878 void ModifyFlexfecConfigs( | 879 void ModifyFlexfecConfigs( |
| 879 std::vector<FlexfecReceiveStream::Config>* receive_configs) override { | 880 std::vector<FlexfecReceiveStream::Config>* receive_configs) override { |
| (...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1175 (*receive_configs)[0].rtp.ulpfec.red_payload_type = | 1176 (*receive_configs)[0].rtp.ulpfec.red_payload_type = |
| 1176 send_config->rtp.ulpfec.red_payload_type; | 1177 send_config->rtp.ulpfec.red_payload_type; |
| 1177 (*receive_configs)[0].rtp.ulpfec.red_rtx_payload_type = | 1178 (*receive_configs)[0].rtp.ulpfec.red_rtx_payload_type = |
| 1178 send_config->rtp.ulpfec.red_rtx_payload_type; | 1179 send_config->rtp.ulpfec.red_rtx_payload_type; |
| 1179 } | 1180 } |
| 1180 | 1181 |
| 1181 if (retransmission_ssrc_ == kSendRtxSsrcs[0]) { | 1182 if (retransmission_ssrc_ == kSendRtxSsrcs[0]) { |
| 1182 send_config->rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[0]); | 1183 send_config->rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[0]); |
| 1183 send_config->rtp.rtx.payload_type = kSendRtxPayloadType; | 1184 send_config->rtp.rtx.payload_type = kSendRtxPayloadType; |
| 1184 (*receive_configs)[0].rtp.rtx_ssrc = kSendRtxSsrcs[0]; | 1185 (*receive_configs)[0].rtp.rtx_ssrc = kSendRtxSsrcs[0]; |
| 1185 (*receive_configs)[0].rtp.rtx_payload_types[payload_type_] = | 1186 (*receive_configs)[0] |
| 1186 kSendRtxPayloadType; | 1187 .rtp.rtx_associated_payload_types[kSendRtxPayloadType] = |
| 1188 payload_type_; |
| 1187 } | 1189 } |
| 1188 // Configure encoding and decoding with VP8, since generic packetization | 1190 // Configure encoding and decoding with VP8, since generic packetization |
| 1189 // doesn't support FEC with NACK. | 1191 // doesn't support FEC with NACK. |
| 1190 RTC_DCHECK_EQ(1, (*receive_configs)[0].decoders.size()); | 1192 RTC_DCHECK_EQ(1, (*receive_configs)[0].decoders.size()); |
| 1191 send_config->encoder_settings.encoder = encoder_.get(); | 1193 send_config->encoder_settings.encoder = encoder_.get(); |
| 1192 send_config->encoder_settings.payload_name = "VP8"; | 1194 send_config->encoder_settings.payload_name = "VP8"; |
| 1193 (*receive_configs)[0].decoders[0].payload_name = "VP8"; | 1195 (*receive_configs)[0].decoders[0].payload_name = "VP8"; |
| 1194 } | 1196 } |
| 1195 | 1197 |
| 1196 void OnFrameGeneratorCapturerCreated( | 1198 void OnFrameGeneratorCapturerCreated( |
| (...skipping 1569 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2766 (*receive_configs)[0].decoders[0].payload_name = "VP8"; | 2768 (*receive_configs)[0].decoders[0].payload_name = "VP8"; |
| 2767 (*receive_configs)[0].rtp.ulpfec.red_payload_type = kRedPayloadType; | 2769 (*receive_configs)[0].rtp.ulpfec.red_payload_type = kRedPayloadType; |
| 2768 (*receive_configs)[0].rtp.ulpfec.ulpfec_payload_type = | 2770 (*receive_configs)[0].rtp.ulpfec.ulpfec_payload_type = |
| 2769 kUlpfecPayloadType; | 2771 kUlpfecPayloadType; |
| 2770 } | 2772 } |
| 2771 // RTX | 2773 // RTX |
| 2772 if (use_rtx_) { | 2774 if (use_rtx_) { |
| 2773 send_config->rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[0]); | 2775 send_config->rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[0]); |
| 2774 send_config->rtp.rtx.payload_type = kSendRtxPayloadType; | 2776 send_config->rtp.rtx.payload_type = kSendRtxPayloadType; |
| 2775 (*receive_configs)[0].rtp.rtx_ssrc = kSendRtxSsrcs[0]; | 2777 (*receive_configs)[0].rtp.rtx_ssrc = kSendRtxSsrcs[0]; |
| 2776 (*receive_configs)[0].rtp.rtx_payload_types[kFakeVideoSendPayloadType] = | 2778 (*receive_configs)[0] |
| 2777 kSendRtxPayloadType; | 2779 .rtp.rtx_associated_payload_types[kSendRtxPayloadType] = |
| 2780 kFakeVideoSendPayloadType; |
| 2778 } | 2781 } |
| 2779 // RTT needed for RemoteNtpTimeEstimator for the receive stream. | 2782 // RTT needed for RemoteNtpTimeEstimator for the receive stream. |
| 2780 (*receive_configs)[0].rtp.rtcp_xr.receiver_reference_time_report = true; | 2783 (*receive_configs)[0].rtp.rtcp_xr.receiver_reference_time_report = true; |
| 2781 encoder_config->content_type = | 2784 encoder_config->content_type = |
| 2782 screenshare_ ? VideoEncoderConfig::ContentType::kScreen | 2785 screenshare_ ? VideoEncoderConfig::ContentType::kScreen |
| 2783 : VideoEncoderConfig::ContentType::kRealtimeVideo; | 2786 : VideoEncoderConfig::ContentType::kRealtimeVideo; |
| 2784 } | 2787 } |
| 2785 | 2788 |
| 2786 void OnCallsCreated(Call* sender_call, Call* receiver_call) override { | 2789 void OnCallsCreated(Call* sender_call, Call* receiver_call) override { |
| 2787 sender_call_ = sender_call; | 2790 sender_call_ = sender_call; |
| (...skipping 745 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3533 const std::vector<uint32_t>& ssrcs = send_config->rtp.ssrcs; | 3536 const std::vector<uint32_t>& ssrcs = send_config->rtp.ssrcs; |
| 3534 for (size_t i = 0; i < ssrcs.size(); ++i) { | 3537 for (size_t i = 0; i < ssrcs.size(); ++i) { |
| 3535 expected_send_ssrcs_.insert(ssrcs[i]); | 3538 expected_send_ssrcs_.insert(ssrcs[i]); |
| 3536 expected_receive_ssrcs_.push_back( | 3539 expected_receive_ssrcs_.push_back( |
| 3537 (*receive_configs)[i].rtp.remote_ssrc); | 3540 (*receive_configs)[i].rtp.remote_ssrc); |
| 3538 (*receive_configs)[i].render_delay_ms = kExpectedRenderDelayMs; | 3541 (*receive_configs)[i].render_delay_ms = kExpectedRenderDelayMs; |
| 3539 (*receive_configs)[i].renderer = &receive_stream_renderer_; | 3542 (*receive_configs)[i].renderer = &receive_stream_renderer_; |
| 3540 (*receive_configs)[i].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; | 3543 (*receive_configs)[i].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; |
| 3541 | 3544 |
| 3542 (*receive_configs)[i].rtp.rtx_ssrc = kSendRtxSsrcs[i]; | 3545 (*receive_configs)[i].rtp.rtx_ssrc = kSendRtxSsrcs[i]; |
| 3543 (*receive_configs)[i].rtp.rtx_payload_types[kFakeVideoSendPayloadType] = | 3546 (*receive_configs)[i] |
| 3544 kSendRtxPayloadType; | 3547 .rtp.rtx_associated_payload_types[kSendRtxPayloadType] = |
| 3548 kFakeVideoSendPayloadType; |
| 3545 } | 3549 } |
| 3546 | 3550 |
| 3547 for (size_t i = 0; i < kNumSsrcs; ++i) | 3551 for (size_t i = 0; i < kNumSsrcs; ++i) |
| 3548 send_config->rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[i]); | 3552 send_config->rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[i]); |
| 3549 | 3553 |
| 3550 // Use a delayed encoder to make sure we see CpuOveruseMetrics stats that | 3554 // Use a delayed encoder to make sure we see CpuOveruseMetrics stats that |
| 3551 // are non-zero. | 3555 // are non-zero. |
| 3552 send_config->encoder_settings.encoder = &encoder_; | 3556 send_config->encoder_settings.encoder = &encoder_; |
| 3553 } | 3557 } |
| 3554 | 3558 |
| (...skipping 761 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4316 video_send_config_.encoder_settings.encoder = encoder.get(); | 4320 video_send_config_.encoder_settings.encoder = encoder.get(); |
| 4317 video_send_config_.encoder_settings.payload_name = "VP8"; | 4321 video_send_config_.encoder_settings.payload_name = "VP8"; |
| 4318 video_send_config_.encoder_settings.payload_type = kVideoSendPayloadType; | 4322 video_send_config_.encoder_settings.payload_type = kVideoSendPayloadType; |
| 4319 video_send_config_.rtp.nack.rtp_history_ms = kNackRtpHistoryMs; | 4323 video_send_config_.rtp.nack.rtp_history_ms = kNackRtpHistoryMs; |
| 4320 video_send_config_.rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[0]); | 4324 video_send_config_.rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[0]); |
| 4321 video_send_config_.rtp.rtx.payload_type = kSendRtxPayloadType; | 4325 video_send_config_.rtp.rtx.payload_type = kSendRtxPayloadType; |
| 4322 | 4326 |
| 4323 CreateMatchingReceiveConfigs(receive_transport.get()); | 4327 CreateMatchingReceiveConfigs(receive_transport.get()); |
| 4324 video_receive_configs_[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; | 4328 video_receive_configs_[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; |
| 4325 video_receive_configs_[0].rtp.rtx_ssrc = kSendRtxSsrcs[0]; | 4329 video_receive_configs_[0].rtp.rtx_ssrc = kSendRtxSsrcs[0]; |
| 4326 video_receive_configs_[0].rtp.rtx_payload_types[kVideoSendPayloadType] = | 4330 video_receive_configs_[0] |
| 4327 kSendRtxPayloadType; | 4331 .rtp.rtx_associated_payload_types[kSendRtxPayloadType] = |
| 4332 kVideoSendPayloadType; |
| 4328 | 4333 |
| 4329 // The matching FlexFEC receive config is not created by | 4334 // The matching FlexFEC receive config is not created by |
| 4330 // CreateMatchingReceiveConfigs since this is not a test::BaseTest. | 4335 // CreateMatchingReceiveConfigs since this is not a test::BaseTest. |
| 4331 // Set up the receive config manually instead. | 4336 // Set up the receive config manually instead. |
| 4332 FlexfecReceiveStream::Config flexfec_receive_config( | 4337 FlexfecReceiveStream::Config flexfec_receive_config( |
| 4333 receive_transport.get()); | 4338 receive_transport.get()); |
| 4334 flexfec_receive_config.payload_type = | 4339 flexfec_receive_config.payload_type = |
| 4335 video_send_config_.rtp.flexfec.payload_type; | 4340 video_send_config_.rtp.flexfec.payload_type; |
| 4336 flexfec_receive_config.remote_ssrc = video_send_config_.rtp.flexfec.ssrc; | 4341 flexfec_receive_config.remote_ssrc = video_send_config_.rtp.flexfec.ssrc; |
| 4337 flexfec_receive_config.protected_media_ssrcs = | 4342 flexfec_receive_config.protected_media_ssrcs = |
| (...skipping 479 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4817 VideoReceiveStream::Config default_receive_config(nullptr); | 4822 VideoReceiveStream::Config default_receive_config(nullptr); |
| 4818 EXPECT_EQ(RtcpMode::kCompound, default_receive_config.rtp.rtcp_mode) | 4823 EXPECT_EQ(RtcpMode::kCompound, default_receive_config.rtp.rtcp_mode) |
| 4819 << "Reduced-size RTCP require rtcp-rsize to be negotiated."; | 4824 << "Reduced-size RTCP require rtcp-rsize to be negotiated."; |
| 4820 EXPECT_FALSE(default_receive_config.rtp.remb) | 4825 EXPECT_FALSE(default_receive_config.rtp.remb) |
| 4821 << "REMB require rtcp-fb: goog-remb to be negotiated."; | 4826 << "REMB require rtcp-fb: goog-remb to be negotiated."; |
| 4822 EXPECT_FALSE( | 4827 EXPECT_FALSE( |
| 4823 default_receive_config.rtp.rtcp_xr.receiver_reference_time_report) | 4828 default_receive_config.rtp.rtcp_xr.receiver_reference_time_report) |
| 4824 << "RTCP XR settings require rtcp-xr to be negotiated."; | 4829 << "RTCP XR settings require rtcp-xr to be negotiated."; |
| 4825 EXPECT_EQ(0U, default_receive_config.rtp.rtx_ssrc) | 4830 EXPECT_EQ(0U, default_receive_config.rtp.rtx_ssrc) |
| 4826 << "Enabling RTX requires ssrc-group: FID negotiation"; | 4831 << "Enabling RTX requires ssrc-group: FID negotiation"; |
| 4827 EXPECT_TRUE(default_receive_config.rtp.rtx_payload_types.empty()) | 4832 EXPECT_TRUE(default_receive_config.rtp.rtx_associated_payload_types.empty()) |
| 4828 << "Enabling RTX requires rtpmap: rtx negotiation."; | 4833 << "Enabling RTX requires rtpmap: rtx negotiation."; |
| 4829 EXPECT_TRUE(default_receive_config.rtp.extensions.empty()) | 4834 EXPECT_TRUE(default_receive_config.rtp.extensions.empty()) |
| 4830 << "Enabling RTP extensions require negotiation."; | 4835 << "Enabling RTP extensions require negotiation."; |
| 4831 | 4836 |
| 4832 VerifyEmptyNackConfig(default_receive_config.rtp.nack); | 4837 VerifyEmptyNackConfig(default_receive_config.rtp.nack); |
| 4833 VerifyEmptyUlpfecConfig(default_receive_config.rtp.ulpfec); | 4838 VerifyEmptyUlpfecConfig(default_receive_config.rtp.ulpfec); |
| 4834 } | 4839 } |
| 4835 | 4840 |
| 4836 TEST_F(EndToEndTest, VerifyDefaultFlexfecReceiveConfigParameters) { | 4841 TEST_F(EndToEndTest, VerifyDefaultFlexfecReceiveConfigParameters) { |
| 4837 test::NullTransport rtcp_send_transport; | 4842 test::NullTransport rtcp_send_transport; |
| (...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5011 std::unique_ptr<VideoEncoder> encoder_; | 5016 std::unique_ptr<VideoEncoder> encoder_; |
| 5012 std::unique_ptr<VideoDecoder> decoder_; | 5017 std::unique_ptr<VideoDecoder> decoder_; |
| 5013 rtc::CriticalSection crit_; | 5018 rtc::CriticalSection crit_; |
| 5014 int recorded_frames_ GUARDED_BY(crit_); | 5019 int recorded_frames_ GUARDED_BY(crit_); |
| 5015 } test(this); | 5020 } test(this); |
| 5016 | 5021 |
| 5017 RunBaseTest(&test); | 5022 RunBaseTest(&test); |
| 5018 } | 5023 } |
| 5019 | 5024 |
| 5020 } // namespace webrtc | 5025 } // namespace webrtc |
| OLD | NEW |