| 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 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 115 }; | 115 }; |
| 116 | 116 |
| 117 void DecodesRetransmittedFrame(bool enable_rtx, bool enable_red); | 117 void DecodesRetransmittedFrame(bool enable_rtx, bool enable_red); |
| 118 void ReceivesPliAndRecovers(int rtp_history_ms); | 118 void ReceivesPliAndRecovers(int rtp_history_ms); |
| 119 void RespectsRtcpMode(RtcpMode rtcp_mode); | 119 void RespectsRtcpMode(RtcpMode rtcp_mode); |
| 120 void TestXrReceiverReferenceTimeReport(bool enable_rrtr); | 120 void TestXrReceiverReferenceTimeReport(bool enable_rrtr); |
| 121 void TestSendsSetSsrcs(size_t num_ssrcs, bool send_single_ssrc_first); | 121 void TestSendsSetSsrcs(size_t num_ssrcs, bool send_single_ssrc_first); |
| 122 void TestRtpStatePreservation(bool use_rtx, bool provoke_rtcpsr_before_rtp); | 122 void TestRtpStatePreservation(bool use_rtx, bool provoke_rtcpsr_before_rtp); |
| 123 void VerifyHistogramStats(bool use_rtx, bool use_red, bool screenshare); | 123 void VerifyHistogramStats(bool use_rtx, bool use_red, bool screenshare); |
| 124 void VerifyNewVideoSendStreamsRespectNetworkState( | 124 void VerifyNewVideoSendStreamsRespectNetworkState( |
| 125 MediaType network_to_bring_down, | 125 MediaType network_to_bring_up, |
| 126 VideoEncoder* encoder, | 126 VideoEncoder* encoder, |
| 127 Transport* transport); | 127 Transport* transport); |
| 128 void VerifyNewVideoReceiveStreamsRespectNetworkState( | 128 void VerifyNewVideoReceiveStreamsRespectNetworkState( |
| 129 MediaType network_to_bring_down, | 129 MediaType network_to_bring_up, |
| 130 Transport* transport); | 130 Transport* transport); |
| 131 }; | 131 }; |
| 132 | 132 |
| 133 TEST_F(EndToEndTest, ReceiverCanBeStartedTwice) { | 133 TEST_F(EndToEndTest, ReceiverCanBeStartedTwice) { |
| 134 CreateCalls(Call::Config(&event_log_), Call::Config(&event_log_)); | 134 CreateCalls(Call::Config(&event_log_), Call::Config(&event_log_)); |
| 135 | 135 |
| 136 test::NullTransport transport; | 136 test::NullTransport transport; |
| 137 CreateSendConfig(1, 0, 0, &transport); | 137 CreateSendConfig(1, 0, 0, &transport); |
| 138 CreateMatchingReceiveConfigs(&transport); | 138 CreateMatchingReceiveConfigs(&transport); |
| 139 | 139 |
| (...skipping 3524 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3664 break; | 3664 break; |
| 3665 } | 3665 } |
| 3666 SleepMs(10); | 3666 SleepMs(10); |
| 3667 } | 3667 } |
| 3668 | 3668 |
| 3669 Stop(); | 3669 Stop(); |
| 3670 DestroyStreams(); | 3670 DestroyStreams(); |
| 3671 } | 3671 } |
| 3672 | 3672 |
| 3673 void EndToEndTest::VerifyNewVideoSendStreamsRespectNetworkState( | 3673 void EndToEndTest::VerifyNewVideoSendStreamsRespectNetworkState( |
| 3674 MediaType network_to_bring_down, | 3674 MediaType network_to_bring_up, |
| 3675 VideoEncoder* encoder, | 3675 VideoEncoder* encoder, |
| 3676 Transport* transport) { | 3676 Transport* transport) { |
| 3677 CreateSenderCall(Call::Config(&event_log_)); | 3677 CreateSenderCall(Call::Config(&event_log_)); |
| 3678 sender_call_->SignalChannelNetworkState(network_to_bring_down, kNetworkDown); | 3678 sender_call_->SignalChannelNetworkState(network_to_bring_up, kNetworkUp); |
| 3679 | 3679 |
| 3680 CreateSendConfig(1, 0, 0, transport); | 3680 CreateSendConfig(1, 0, 0, transport); |
| 3681 video_send_config_.encoder_settings.encoder = encoder; | 3681 video_send_config_.encoder_settings.encoder = encoder; |
| 3682 CreateVideoStreams(); | 3682 CreateVideoStreams(); |
| 3683 CreateFrameGeneratorCapturer(kDefaultFramerate, kDefaultWidth, | 3683 CreateFrameGeneratorCapturer(kDefaultFramerate, kDefaultWidth, |
| 3684 kDefaultHeight); | 3684 kDefaultHeight); |
| 3685 | 3685 |
| 3686 Start(); | 3686 Start(); |
| 3687 SleepMs(kSilenceTimeoutMs); | 3687 SleepMs(kSilenceTimeoutMs); |
| 3688 Stop(); | 3688 Stop(); |
| 3689 | 3689 |
| 3690 DestroyStreams(); | 3690 DestroyStreams(); |
| 3691 } | 3691 } |
| 3692 | 3692 |
| 3693 void EndToEndTest::VerifyNewVideoReceiveStreamsRespectNetworkState( | 3693 void EndToEndTest::VerifyNewVideoReceiveStreamsRespectNetworkState( |
| 3694 MediaType network_to_bring_down, | 3694 MediaType network_to_bring_up, |
| 3695 Transport* transport) { | 3695 Transport* transport) { |
| 3696 Call::Config config(&event_log_); | 3696 Call::Config config(&event_log_); |
| 3697 CreateCalls(config, config); | 3697 CreateCalls(config, config); |
| 3698 receiver_call_->SignalChannelNetworkState(network_to_bring_down, | 3698 receiver_call_->SignalChannelNetworkState(network_to_bring_up, kNetworkUp); |
| 3699 kNetworkDown); | |
| 3700 | 3699 |
| 3701 test::DirectTransport sender_transport(sender_call_.get()); | 3700 test::DirectTransport sender_transport(sender_call_.get()); |
| 3702 sender_transport.SetReceiver(receiver_call_->Receiver()); | 3701 sender_transport.SetReceiver(receiver_call_->Receiver()); |
| 3703 CreateSendConfig(1, 0, 0, &sender_transport); | 3702 CreateSendConfig(1, 0, 0, &sender_transport); |
| 3704 CreateMatchingReceiveConfigs(transport); | 3703 CreateMatchingReceiveConfigs(transport); |
| 3705 CreateVideoStreams(); | 3704 CreateVideoStreams(); |
| 3706 CreateFrameGeneratorCapturer(kDefaultFramerate, kDefaultWidth, | 3705 CreateFrameGeneratorCapturer(kDefaultFramerate, kDefaultWidth, |
| 3707 kDefaultHeight); | 3706 kDefaultHeight); |
| 3708 | 3707 |
| 3709 Start(); | 3708 Start(); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 3731 const std::vector<FrameType>* frame_types) override { | 3730 const std::vector<FrameType>* frame_types) override { |
| 3732 ADD_FAILURE() << "Unexpected frame encode."; | 3731 ADD_FAILURE() << "Unexpected frame encode."; |
| 3733 return test::FakeEncoder::Encode(input_image, codec_specific_info, | 3732 return test::FakeEncoder::Encode(input_image, codec_specific_info, |
| 3734 frame_types); | 3733 frame_types); |
| 3735 } | 3734 } |
| 3736 }; | 3735 }; |
| 3737 | 3736 |
| 3738 UnusedEncoder unused_encoder; | 3737 UnusedEncoder unused_encoder; |
| 3739 UnusedTransport unused_transport; | 3738 UnusedTransport unused_transport; |
| 3740 VerifyNewVideoSendStreamsRespectNetworkState( | 3739 VerifyNewVideoSendStreamsRespectNetworkState( |
| 3741 MediaType::VIDEO, &unused_encoder, &unused_transport); | 3740 MediaType::AUDIO, &unused_encoder, &unused_transport); |
| 3742 } | 3741 } |
| 3743 | 3742 |
| 3744 TEST_F(EndToEndTest, NewVideoSendStreamsIgnoreAudioNetworkDown) { | 3743 TEST_F(EndToEndTest, NewVideoSendStreamsIgnoreAudioNetworkDown) { |
| 3745 class RequiredEncoder : public test::FakeEncoder { | 3744 class RequiredEncoder : public test::FakeEncoder { |
| 3746 public: | 3745 public: |
| 3747 RequiredEncoder() | 3746 RequiredEncoder() |
| 3748 : FakeEncoder(Clock::GetRealTimeClock()), encoded_frame_(false) {} | 3747 : FakeEncoder(Clock::GetRealTimeClock()), encoded_frame_(false) {} |
| 3749 ~RequiredEncoder() { | 3748 ~RequiredEncoder() { |
| 3750 if (!encoded_frame_) { | 3749 if (!encoded_frame_) { |
| 3751 ADD_FAILURE() << "Didn't encode an expected frame"; | 3750 ADD_FAILURE() << "Didn't encode an expected frame"; |
| 3752 } | 3751 } |
| 3753 } | 3752 } |
| 3754 int32_t Encode(const VideoFrame& input_image, | 3753 int32_t Encode(const VideoFrame& input_image, |
| 3755 const CodecSpecificInfo* codec_specific_info, | 3754 const CodecSpecificInfo* codec_specific_info, |
| 3756 const std::vector<FrameType>* frame_types) override { | 3755 const std::vector<FrameType>* frame_types) override { |
| 3757 encoded_frame_ = true; | 3756 encoded_frame_ = true; |
| 3758 return test::FakeEncoder::Encode(input_image, codec_specific_info, | 3757 return test::FakeEncoder::Encode(input_image, codec_specific_info, |
| 3759 frame_types); | 3758 frame_types); |
| 3760 } | 3759 } |
| 3761 | 3760 |
| 3762 private: | 3761 private: |
| 3763 bool encoded_frame_; | 3762 bool encoded_frame_; |
| 3764 }; | 3763 }; |
| 3765 | 3764 |
| 3766 RequiredTransport required_transport(true /*rtp*/, false /*rtcp*/); | 3765 RequiredTransport required_transport(true /*rtp*/, false /*rtcp*/); |
| 3767 RequiredEncoder required_encoder; | 3766 RequiredEncoder required_encoder; |
| 3768 VerifyNewVideoSendStreamsRespectNetworkState( | 3767 VerifyNewVideoSendStreamsRespectNetworkState( |
| 3769 MediaType::AUDIO, &required_encoder, &required_transport); | 3768 MediaType::VIDEO, &required_encoder, &required_transport); |
| 3770 } | 3769 } |
| 3771 | 3770 |
| 3772 TEST_F(EndToEndTest, NewVideoReceiveStreamsRespectVideoNetworkDown) { | 3771 TEST_F(EndToEndTest, NewVideoReceiveStreamsRespectVideoNetworkDown) { |
| 3773 UnusedTransport transport; | 3772 UnusedTransport transport; |
| 3774 VerifyNewVideoReceiveStreamsRespectNetworkState(MediaType::VIDEO, &transport); | 3773 VerifyNewVideoReceiveStreamsRespectNetworkState(MediaType::AUDIO, &transport); |
| 3775 } | 3774 } |
| 3776 | 3775 |
| 3777 TEST_F(EndToEndTest, NewVideoReceiveStreamsIgnoreAudioNetworkDown) { | 3776 TEST_F(EndToEndTest, NewVideoReceiveStreamsIgnoreAudioNetworkDown) { |
| 3778 RequiredTransport transport(false /*rtp*/, true /*rtcp*/); | 3777 RequiredTransport transport(false /*rtp*/, true /*rtcp*/); |
| 3779 VerifyNewVideoReceiveStreamsRespectNetworkState(MediaType::AUDIO, &transport); | 3778 VerifyNewVideoReceiveStreamsRespectNetworkState(MediaType::VIDEO, &transport); |
| 3780 } | 3779 } |
| 3781 | 3780 |
| 3782 void VerifyEmptyNackConfig(const NackConfig& config) { | 3781 void VerifyEmptyNackConfig(const NackConfig& config) { |
| 3783 EXPECT_EQ(0, config.rtp_history_ms) | 3782 EXPECT_EQ(0, config.rtp_history_ms) |
| 3784 << "Enabling NACK requires rtcp-fb: nack negotiation."; | 3783 << "Enabling NACK requires rtcp-fb: nack negotiation."; |
| 3785 } | 3784 } |
| 3786 | 3785 |
| 3787 void VerifyEmptyUlpfecConfig(const UlpfecConfig& config) { | 3786 void VerifyEmptyUlpfecConfig(const UlpfecConfig& config) { |
| 3788 EXPECT_EQ(-1, config.ulpfec_payload_type) | 3787 EXPECT_EQ(-1, config.ulpfec_payload_type) |
| 3789 << "Enabling ULPFEC requires rtpmap: ulpfec negotiation."; | 3788 << "Enabling ULPFEC requires rtpmap: ulpfec negotiation."; |
| (...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4004 std::unique_ptr<VideoEncoder> encoder_; | 4003 std::unique_ptr<VideoEncoder> encoder_; |
| 4005 std::unique_ptr<VideoDecoder> decoder_; | 4004 std::unique_ptr<VideoDecoder> decoder_; |
| 4006 rtc::CriticalSection crit_; | 4005 rtc::CriticalSection crit_; |
| 4007 int recorded_frames_ GUARDED_BY(crit_); | 4006 int recorded_frames_ GUARDED_BY(crit_); |
| 4008 } test(this); | 4007 } test(this); |
| 4009 | 4008 |
| 4010 RunBaseTest(&test); | 4009 RunBaseTest(&test); |
| 4011 } | 4010 } |
| 4012 | 4011 |
| 4013 } // namespace webrtc | 4012 } // namespace webrtc |
| OLD | NEW |