| 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> // max | 10 #include <algorithm> // max |
| (...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 322 Action OnSendRtp(const uint8_t* packet, size_t length) override { | 322 Action OnSendRtp(const uint8_t* packet, size_t length) override { |
| 323 RTPHeader header; | 323 RTPHeader header; |
| 324 EXPECT_TRUE(parser_->Parse(packet, length, &header)); | 324 EXPECT_TRUE(parser_->Parse(packet, length, &header)); |
| 325 | 325 |
| 326 // Send lossy receive reports to trigger FEC enabling. | 326 // Send lossy receive reports to trigger FEC enabling. |
| 327 if (send_count_++ % 2 != 0) { | 327 if (send_count_++ % 2 != 0) { |
| 328 // Receive statistics reporting having lost 50% of the packets. | 328 // Receive statistics reporting having lost 50% of the packets. |
| 329 FakeReceiveStatistics lossy_receive_stats( | 329 FakeReceiveStatistics lossy_receive_stats( |
| 330 kSendSsrcs[0], header.sequenceNumber, send_count_ / 2, 127); | 330 kSendSsrcs[0], header.sequenceNumber, send_count_ / 2, 127); |
| 331 RTCPSender rtcp_sender(false, Clock::GetRealTimeClock(), | 331 RTCPSender rtcp_sender(false, Clock::GetRealTimeClock(), |
| 332 &lossy_receive_stats, nullptr); | 332 &lossy_receive_stats, nullptr, |
| 333 EXPECT_EQ(0, rtcp_sender.RegisterSendTransport(&transport_adapter_)); | 333 &transport_adapter_); |
| 334 | 334 |
| 335 rtcp_sender.SetRTCPStatus(kRtcpNonCompound); | 335 rtcp_sender.SetRTCPStatus(kRtcpNonCompound); |
| 336 rtcp_sender.SetRemoteSSRC(kSendSsrcs[0]); | 336 rtcp_sender.SetRemoteSSRC(kSendSsrcs[0]); |
| 337 | 337 |
| 338 RTCPSender::FeedbackState feedback_state; | 338 RTCPSender::FeedbackState feedback_state; |
| 339 | 339 |
| 340 EXPECT_EQ(0, rtcp_sender.SendRTCP(feedback_state, kRtcpRr)); | 340 EXPECT_EQ(0, rtcp_sender.SendRTCP(feedback_state, kRtcpRr)); |
| 341 } | 341 } |
| 342 | 342 |
| 343 int encapsulated_payload_type = -1; | 343 int encapsulated_payload_type = -1; |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 404 Action OnSendRtp(const uint8_t* packet, size_t length) override { | 404 Action OnSendRtp(const uint8_t* packet, size_t length) override { |
| 405 RTPHeader header; | 405 RTPHeader header; |
| 406 EXPECT_TRUE(parser_->Parse(packet, length, &header)); | 406 EXPECT_TRUE(parser_->Parse(packet, length, &header)); |
| 407 | 407 |
| 408 // Nack second packet after receiving the third one. | 408 // Nack second packet after receiving the third one. |
| 409 if (++send_count_ == 3) { | 409 if (++send_count_ == 3) { |
| 410 uint16_t nack_sequence_number = header.sequenceNumber - 1; | 410 uint16_t nack_sequence_number = header.sequenceNumber - 1; |
| 411 nacked_sequence_number_ = nack_sequence_number; | 411 nacked_sequence_number_ = nack_sequence_number; |
| 412 NullReceiveStatistics null_stats; | 412 NullReceiveStatistics null_stats; |
| 413 RTCPSender rtcp_sender(false, Clock::GetRealTimeClock(), &null_stats, | 413 RTCPSender rtcp_sender(false, Clock::GetRealTimeClock(), &null_stats, |
| 414 nullptr); | 414 nullptr, &transport_adapter_); |
| 415 EXPECT_EQ(0, rtcp_sender.RegisterSendTransport(&transport_adapter_)); | |
| 416 | 415 |
| 417 rtcp_sender.SetRTCPStatus(kRtcpNonCompound); | 416 rtcp_sender.SetRTCPStatus(kRtcpNonCompound); |
| 418 rtcp_sender.SetRemoteSSRC(kSendSsrcs[0]); | 417 rtcp_sender.SetRemoteSSRC(kSendSsrcs[0]); |
| 419 | 418 |
| 420 RTCPSender::FeedbackState feedback_state; | 419 RTCPSender::FeedbackState feedback_state; |
| 421 | 420 |
| 422 EXPECT_EQ(0, | 421 EXPECT_EQ(0, |
| 423 rtcp_sender.SendRTCP( | 422 rtcp_sender.SendRTCP( |
| 424 feedback_state, kRtcpNack, 1, &nack_sequence_number)); | 423 feedback_state, kRtcpNack, 1, &nack_sequence_number)); |
| 425 } | 424 } |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 591 return SEND_PACKET; | 590 return SEND_PACKET; |
| 592 } | 591 } |
| 593 | 592 |
| 594 void TriggerLossReport(const RTPHeader& header) { | 593 void TriggerLossReport(const RTPHeader& header) { |
| 595 // Send lossy receive reports to trigger FEC enabling. | 594 // Send lossy receive reports to trigger FEC enabling. |
| 596 if (packet_count_++ % 2 != 0) { | 595 if (packet_count_++ % 2 != 0) { |
| 597 // Receive statistics reporting having lost 50% of the packets. | 596 // Receive statistics reporting having lost 50% of the packets. |
| 598 FakeReceiveStatistics lossy_receive_stats( | 597 FakeReceiveStatistics lossy_receive_stats( |
| 599 kSendSsrcs[0], header.sequenceNumber, packet_count_ / 2, 127); | 598 kSendSsrcs[0], header.sequenceNumber, packet_count_ / 2, 127); |
| 600 RTCPSender rtcp_sender(false, Clock::GetRealTimeClock(), | 599 RTCPSender rtcp_sender(false, Clock::GetRealTimeClock(), |
| 601 &lossy_receive_stats, nullptr); | 600 &lossy_receive_stats, nullptr, |
| 602 EXPECT_EQ(0, rtcp_sender.RegisterSendTransport(&transport_adapter_)); | 601 &transport_adapter_); |
| 603 | 602 |
| 604 rtcp_sender.SetRTCPStatus(kRtcpNonCompound); | 603 rtcp_sender.SetRTCPStatus(kRtcpNonCompound); |
| 605 rtcp_sender.SetRemoteSSRC(kSendSsrcs[0]); | 604 rtcp_sender.SetRemoteSSRC(kSendSsrcs[0]); |
| 606 | 605 |
| 607 RTCPSender::FeedbackState feedback_state; | 606 RTCPSender::FeedbackState feedback_state; |
| 608 | 607 |
| 609 EXPECT_EQ(0, rtcp_sender.SendRTCP(feedback_state, kRtcpRr)); | 608 EXPECT_EQ(0, rtcp_sender.SendRTCP(feedback_state, kRtcpRr)); |
| 610 } | 609 } |
| 611 } | 610 } |
| 612 | 611 |
| (...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 821 kBeforeSuspend, | 820 kBeforeSuspend, |
| 822 kDuringSuspend, | 821 kDuringSuspend, |
| 823 kWaitingForPacket, | 822 kWaitingForPacket, |
| 824 kWaitingForStats | 823 kWaitingForStats |
| 825 }; | 824 }; |
| 826 | 825 |
| 827 virtual void SendRtcpFeedback(int remb_value) | 826 virtual void SendRtcpFeedback(int remb_value) |
| 828 EXCLUSIVE_LOCKS_REQUIRED(crit_) { | 827 EXCLUSIVE_LOCKS_REQUIRED(crit_) { |
| 829 FakeReceiveStatistics receive_stats( | 828 FakeReceiveStatistics receive_stats( |
| 830 kSendSsrcs[0], last_sequence_number_, rtp_count_, 0); | 829 kSendSsrcs[0], last_sequence_number_, rtp_count_, 0); |
| 831 RTCPSender rtcp_sender(false, clock_, &receive_stats, nullptr); | 830 RTCPSender rtcp_sender(false, clock_, &receive_stats, nullptr, |
| 832 EXPECT_EQ(0, rtcp_sender.RegisterSendTransport(&transport_adapter_)); | 831 &transport_adapter_); |
| 833 | 832 |
| 834 rtcp_sender.SetRTCPStatus(kRtcpNonCompound); | 833 rtcp_sender.SetRTCPStatus(kRtcpNonCompound); |
| 835 rtcp_sender.SetRemoteSSRC(kSendSsrcs[0]); | 834 rtcp_sender.SetRemoteSSRC(kSendSsrcs[0]); |
| 836 if (remb_value > 0) { | 835 if (remb_value > 0) { |
| 837 rtcp_sender.SetREMBStatus(true); | 836 rtcp_sender.SetREMBStatus(true); |
| 838 rtcp_sender.SetREMBData(remb_value, std::vector<uint32_t>()); | 837 rtcp_sender.SetREMBData(remb_value, std::vector<uint32_t>()); |
| 839 } | 838 } |
| 840 RTCPSender::FeedbackState feedback_state; | 839 RTCPSender::FeedbackState feedback_state; |
| 841 EXPECT_EQ(0, rtcp_sender.SendRTCP(feedback_state, kRtcpRr)); | 840 EXPECT_EQ(0, rtcp_sender.SendRTCP(feedback_state, kRtcpRr)); |
| 842 } | 841 } |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 881 Action OnSendRtcp(const uint8_t* packet, size_t length) override { | 880 Action OnSendRtcp(const uint8_t* packet, size_t length) override { |
| 882 rtc::CritScope lock(&crit_); | 881 rtc::CritScope lock(&crit_); |
| 883 const int kVideoMutedThresholdMs = 10000; | 882 const int kVideoMutedThresholdMs = 10000; |
| 884 if (last_packet_time_ms_ > 0 && | 883 if (last_packet_time_ms_ > 0 && |
| 885 clock_->TimeInMilliseconds() - last_packet_time_ms_ > | 884 clock_->TimeInMilliseconds() - last_packet_time_ms_ > |
| 886 kVideoMutedThresholdMs) | 885 kVideoMutedThresholdMs) |
| 887 observation_complete_->Set(); | 886 observation_complete_->Set(); |
| 888 // Receive statistics reporting having lost 50% of the packets. | 887 // Receive statistics reporting having lost 50% of the packets. |
| 889 FakeReceiveStatistics receive_stats(kSendSsrcs[0], 1, 1, 0); | 888 FakeReceiveStatistics receive_stats(kSendSsrcs[0], 1, 1, 0); |
| 890 RTCPSender rtcp_sender(false, Clock::GetRealTimeClock(), &receive_stats, | 889 RTCPSender rtcp_sender(false, Clock::GetRealTimeClock(), &receive_stats, |
| 891 nullptr); | 890 nullptr, &transport_adapter_); |
| 892 EXPECT_EQ(0, rtcp_sender.RegisterSendTransport(&transport_adapter_)); | |
| 893 | 891 |
| 894 rtcp_sender.SetRTCPStatus(kRtcpNonCompound); | 892 rtcp_sender.SetRTCPStatus(kRtcpNonCompound); |
| 895 rtcp_sender.SetRemoteSSRC(kSendSsrcs[0]); | 893 rtcp_sender.SetRemoteSSRC(kSendSsrcs[0]); |
| 896 | 894 |
| 897 RTCPSender::FeedbackState feedback_state; | 895 RTCPSender::FeedbackState feedback_state; |
| 898 | 896 |
| 899 EXPECT_EQ(0, rtcp_sender.SendRTCP(feedback_state, kRtcpRr)); | 897 EXPECT_EQ(0, rtcp_sender.SendRTCP(feedback_state, kRtcpRr)); |
| 900 return SEND_PACKET; | 898 return SEND_PACKET; |
| 901 } | 899 } |
| 902 | 900 |
| (...skipping 995 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1898 EXPECT_TRUE(vp9videoHeader->flexible_mode); | 1896 EXPECT_TRUE(vp9videoHeader->flexible_mode); |
| 1899 observation_complete_->Set(); | 1897 observation_complete_->Set(); |
| 1900 } | 1898 } |
| 1901 | 1899 |
| 1902 } test; | 1900 } test; |
| 1903 | 1901 |
| 1904 RunBaseTest(&test); | 1902 RunBaseTest(&test); |
| 1905 } | 1903 } |
| 1906 | 1904 |
| 1907 } // namespace webrtc | 1905 } // namespace webrtc |
| OLD | NEW |